R data.table fread使用没有标题的命名colClasses(例如没有col.names?)

时间:2015-02-19 09:09:40

标签: r data.table fread

更新(2016年6月)

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吗?

2 个答案:

答案 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

的人