在R中的read.csv中指定colClasses的问题

时间:2011-07-07 19:30:45

标签: r csv

我试图在read.csv中指定colClasses以尝试加速读取csv文件。但是,我遇到了以下问题:

假设我有一个名为“t.csv”的文件:

"a","b"
"x","0"

然后,如果我在R中运行以下内容:

data <- read.csv('t.csv' , stringsAsFactors=FALSE, check.names=FALSE , comment.char='', colClasses= c('character','numeric') )

我收到了这个错误:

Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
  scan() expected 'a real', got '"0"'

起初我认为这是我引用的问题。但是在read.csv中使用quote ='“'并没有帮助。

2 个答案:

答案 0 :(得分:8)

您的第二列不是引用的numeric - 它会使其成为文本。

因此请将其作为文本阅读,然后在列上调用as.numeric(...)。或者改变文件。

答案 1 :(得分:3)

继Dirk之后,

您可以简单地删除colClasses参数,该文件将正常读取。

data <- read.csv('t.csv' , stringsAsFactors=FALSE, check.names=FALSE , comment.char='')
str(data)

给出:

> str(data)
'data.frame':   1 obs. of  2 variables:
 $ a: chr "x"
 $ b: int 0
> class(data$b)
[1] "integer"

您现在应该可以使用第二列完成所需的一切。

GL