我正在使用read.csv()
制作data.table
。导入列时,我需要将它们导入为'字符'或者'数字'。
我使用以下代码(为简洁起见而简化):
dataCols <- c(a="character", b="character", c="numeric", d="character")
data <- data.table(read.csv(file="data.csv", row-names=1, stringsAsFactors=F, colClasses=dataCols))
为了方便起见,我想让dataCols向量成为所有可能列的列表,因为我正在读取许多csv文件,这些文件代表进程各个部分的数据(我的代码是为了检查平等)。
如果我使用上面的代码来读取包含所有列a,b,c和d的csv文件,那么它就可以了。但是,如果我尝试读取只有a-c列的csv,我会收到以下错误:
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
scan() expected 'a real', got '"abc"'
其中&#34; abc&#34;是b列中第1行的内容。
我告诉它将该列作为一个角色阅读,并且它获得了一个角色,但它给了我一个错误。为什么是这样? 令人沮丧的是,前几天当我用另外的东西做这件事的时候,如果我把额外的colClasses放在里面,只是给了我一个警告说“你的csv中列出了更多的colclasses”。
我完全不知道为什么这些错误是a)不同的,并且在我上面描述的问题的情况下,甚至出现在第一位。