2016-07-24 31 views
0

Ich habe eine Textdatei Raum begrenzt Zeichen enthalten sagen:fread und read.table gibt unähnliche Ausgänge entsprechend identisch() in R

a b c d e 

Mir Lesen diese Datei .txt zwei verschiedene Arten verwendet, und dann zu vergleichen, I die beiden Lesungen wie folgt:

a <- fread("C:/Users/user/Desktop/New Text Document.txt",header=FALSE,data.table=FALSE) 
b <- read.table("C:/Users/user/Desktop/New Text Document.txt") 

> identical(a,b) 
[1] FALSE 

Warum das Ergebnis für diese beiden Lesungen von identical() ist unähnlich ist, wenn ich weiß, dass beide a und b die gleichen Daten enthalten, haben die gleiche Klasse und gleiche str? ist es ein Problem mit fread oder ein Problem mit der identical Funktion?

Antwort

4

tl; dr Verwendung as.is-read.table zu verhindern Strings Faktoren Umwandlung oder stringsAsFactors=TRUE das gleiche Verhalten in fread zu ermöglichen. Verwenden Sie str, um dies herauszufinden.

writeLines("a b c d e",con="tmpabc.txt") 
str(A <- read.table("tmpabc.txt",header=FALSE)) 
'data.frame': 1 obs. of 5 variables: 
$ V1: Factor w/ 1 level "a": 1 
$ V2: Factor w/ 1 level "b": 1 
$ V3: Factor w/ 1 level "c": 1 
$ V4: Factor w/ 1 level "d": 1 
$ V5: Factor w/ 1 level "e": 1 
str(B <- data.table::fread("tmpabc.txt",header=FALSE,data.table=FALSE)) 
'data.frame': 1 obs. of 5 variables: 
$ V1: chr "a" 
$ V2: chr "b" 
$ V3: chr "c" 
$ V4: chr "d" 
$ V5: chr "e" 

C <- read.table("tmpabc.txt",header=FALSE,as.is=TRUE) 
identical(B,C) ## TRUE 
+0

Danke, ich habe diesen Teil in der Dokumentation übersehen, da ich nicht weiß, welche Faktoren in R Kontext bedeuten. Ich werde Ihre Antwort so schnell wie möglich annehmen. – Imlerith