fread - 指定一个特定列的数据类型

fread - Specify data type of one specific column

我正在使用 data.table::fread 读取 csv 文件。有什么方法可以只指定一列的类型,让 fread 推断所有其他列?

背景:我有一个包含大约 60 列的 csv 文件。对于除一列以外的所有列,fread 都推断出正确的数据类型。但是有一列是带有前导零的 id 列,它应该被读取为字符但被解析为数字删除前导零。

迷你示例:

csv 文件:

id, size, weight
001, 180, 75
0001, 190, 90
002, 160, 58

想要data.table:

df = data.table(id=c("001", "0001", "002"), size=c(180, 190, 160), weight=c(75, 90, 58))

我知道我可以使用 colClasses 参数来指定列 类 的列表,但我不想这样做,因为 fread 可以正确推断除一列以外的所有列。

我不能 df[,id] <- as.character(df[,id]),因为删除前导零会丢失信息。

正如 Roland 在评论中指出的那样,我们可以使用参数 colClasses "with a named vector specifying types for a subset of the columns by name"。

因此,在上面的小例子中,我们可以做一些事情:

df = fread(file="path/to/my_file.csv", colClasses = c('id'='character'))