我试图在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 ='“'并没有帮助。
答案 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