2013-07-02 51 views
3

read.table或read.csv函数将返回NA在csv文件的单元格中为“i”。例如R中的read.table函数无法读取'i'

read.table(text <- textConnection('a, b, c 
b,i,i 
'), sep = ',', head = TRUE) 


a b c 
1 b NA NA 

任何建议来解决这个问题?

> sessionInfo() 
R version 3.0.1 (2013-05-16) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 

locale: 
[1] LC_COLLATE=English_Australia.1252 LC_CTYPE=English_Australia.1252 
[3] LC_MONETARY=English_Australia.1252 LC_NUMERIC=C      
[5] LC_TIME=English_Australia.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

loaded via a namespace (and not attached): 
[1] digest_0.6.3 evaluate_0.4.3 formatR_0.8 tools_3.0.1 

干杯, 帮友

+0

您可以通过'read.table(text =“”,...)'来简化事物。不需要'textConnection'或'<-'。 –

回答

5

出现这种情况是因为你没有指定的类使用colClasses您的列。

因此read.table使用type.convert尝试将其转换为逻辑,整数,数字或复数。

itype.convert解释为试图复杂,但返回NA

type.convert('i') 
## NA 

使用`colClasses =“字符”)来强制所有列是字符,或使用名为向量,以确保您为您希望列的类。

+0

正确的点!为了增加它,如果你的文件中有超过1行,并且该列有一个不同于'i'的值,那么它会被检测到,你会得到正确的读取。 – Arun

+0

谢谢你们两位。您的意见对我非常有帮助。 – Bangyou