r语言 - 如何在 'data.table::fread' 中同时使用 col.names 和 colClasses?



作为一个简单的例子,我写出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.tablecol.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 的自动定义名称。

最新更新