0

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 文件,那么它读起来没问题。但是,如果我尝试读取仅包含 ac 列的 csv,则会收到以下错误:

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

其中“abc”是 b 列中第 1 行的内容。

我告诉它以字符的形式读取该列,并且它正在获取一个字符,但它给了我一个错误。为什么是这样?令人沮丧的是,当我前几天用不同的东西做这件事时,如果我在里面放了额外的 colClasses,只会给我一个警告,说“列出的 colclasses 比你的 csv 中存在的要多”。

我完全不知道为什么这些错误是 a) 不同的,并且在我上面描述的问题的情况下,甚至首先出现。

4

0 回答 0