R fread文件有数千列,在前10后连续

我正在读一个有几千列的文件,我只对前10列感兴趣.

如何告诉fread读取前10列,然后将所有这些列连接到一列.

我假设这将显着加快文件的读取速度. 最佳答案 你可以用awk做到这一点:

> fread("../foo.csv")
       a     b     c     d     e     f     g     h     i
   <int> <int> <int> <int> <int> <int> <int> <int> <int>
1:     1     2     3     4     5     6     7     8     9
2:     2     3     4     5     6     7     8     9    10
> fread("cat ../foo.csv | awk -F ',' 'BEGIN { s = 5 } { for (i=1; i<=NF; i++) printf(\"%s%s\", $(i), i<s ? OFS : i<NF ? \"\" : ORS) }'")
       a     b     c     d  efghi
   <int> <int> <int> <int>  <int>
1:     1     2     3     4  56789
2:     2     3     4     5 678910
> 

但是,如果根据您正在使用的数据,这不能直接解析,我可能会采用这种方法.另一种方法是在读入文件后在post中进行concat.我也怀疑这会加速fread操作.

点赞