我正在读一个有几千列的文件,我只对前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操作.