作为一个简单的例子,我写出cars
没有列名。
data.table::fwrite(cars, "cars.csv", col.names = FALSE)
然后我尝试使用列名和指定列的类型来读取它们a
data.table::fread("cars.csv", col.names = c("a","b"),
colClasses = list(a = "numeric"))
我收到此错误
data.table 中的错误::fread("cars.csv", col.names = c("a", "b"(, colClasses = list(a = "numeric"(( : 列名 'numeric' in 未找到 colClasses[[1]]
一种可能的解决方案是使用列的索引而不是名称。
data.table::fread("cars.csv", col.names = c("a","b"), colClasses = list(numeric = 1))
似乎data.table
在col.names
之前处理colClasses
参数。因此,除了其他答案提供的解决方法外,还有两种替代方法:
# option1: A character vector of classes
fread("cars.csv", colClasses = c(V1 = "numeric"), col.names = c("a","b"))
# option2: Or a named list of vectors of column names or numbers
fread("cars.csv", colClasses = list(numeric = "V1"), col.names = c("a","b"))
在这里,V1
是第一个 colomn 的自动定义名称。