col.names已添加到data.table 1.9.6上,因此问题已经结束,大家都非常高兴:)我想我现在可以将所有read.csv调用转换为fread调用,而无需担心破坏
使用data.table 1.9.4
由于我们注意到的巨大性能改进,我正在将read.csv调用导入fread。我可以处理的大多数问题,但我已经达到了一个无能为力的问题,并且想知道是否有人有一个优雅的解决方案。
我的问题是我已经命名了colClasses但是输入没有标题(它是一个grep函数),这是一个有意义的愚蠢的例子:
males.students <- read.csv(pipe("grep Male students.csv"),
col.names=c("id", "name", "gender"),
colClasses=(id="numeric"))
现在在fread中我仍然想要命名的colClasses,但我没有col名称所以只使用
males.students <- fread("grep Male students.csv"),
colClasses=(id="numeric"))
失败
找不到colClasses [[1]]中的列名'id'
我该如何解决?有计划添加col.names吗?
答案 0 :(得分:2)
在命令行中添加名称:
fread('echo "id,name,gender"; grep Male students.csv', colClasses = c(id='numeric'))
答案 1 :(得分:0)
回答原始问题,如果问题是grep
删除了标题,则可以使用awk
来打印第一行以及包含“男性”的所有行:
fread("awk 'NR==1 || /Male/' students.csv"), colClasses=(id="numeric"))
这可能会帮助仍然使用旧版data.table
。