从fread中提取行数而不读取整个文件

时间:2017-11-18 18:38:27

标签: r windows data.table

我有一个大文本文件(475,000,000行)。我想快速获取文件中的行数而不读取它。

来自int touchedRGB = bitmap.getPixel(x,y);

fread在读取整个文件之前非常快速地(~10秒)出现了行号:

data.table

有没有办法在不读取整个文件的情况下提取此行号?对于记录,读取整个文件需要36秒。

我在fread('D:/text_file.txt',select=1,colClasses="character") Read 7.1% of 472933221 rows #number of rows appears after 10 seconds 尝试了countLines,但需要53秒。不同之处可能是R.utils可以选择只选择一列,countLines可以读取所有内容。

fread

我还尝试过其他Windows方法,例如:

R.utils::countLines("D:/text_file.txt") #53 seconds

这些工作,但它们没有find /v /c "" "D:\text_file.txt" #takes 1 minute 50 seconds grep "^" D:\text_file.txt | wc -l #takes 2 minutes 那么快。我在Windows上。

1 个答案:

答案 0 :(得分:5)

@ d.b让我对我自己的问题提供详细的答案。作为@G。 Grothendieck建议,答案是使用wc,它是Rtools的一部分,是用于在Microsoft Windows下为R构建程序包的资源集合。

安装完成后,请确保C:\Rtools\bin位于Windows中的PATH环境变量中。

然后,使用wcsystem,R可以使用shell

shell('wc -l "D:/text_file.txt"',intern =TRUE)