【发布时间】:2020-09-04 06:24:28
【问题描述】:
我正在使用 data.table::fread 读取 csv 文件。有没有什么办法可以只指定一列的类型,让fread推断所有其他列?
背景:我有一个包含大约 60 列的 csv 文件。对于除一列之外的所有列, fread 推断出正确的数据类型。但是有一列是带有前导零的 id 列,它应该被读取为字符,但被解析为数字,删除前导零。
小例子:
csv 文件:
id, size, weight
001, 180, 75
0001, 190, 90
002, 160, 58
所需的数据表:
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]),因为删除前导零会丢失信息。
【问题讨论】:
-
来自文档(强调我的):“colClasses:与 utils::read.csv 中一样;即,与文件中的列相对应的类型的未命名向量,或命名向量按名称指定列的子集的类型。"
-
这行得通,谢谢!我只需要
colClasses = c('id'='character')。 -
@otwtm 请自行回答您的问题
标签: r data.table fread