我有一个大文本文件(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上。
答案 0 :(得分:5)
@ d.b让我对我自己的问题提供详细的答案。作为@G。 Grothendieck建议,答案是使用wc
,它是Rtools的一部分,是用于在Microsoft Windows下为R构建程序包的资源集合。
安装完成后,请确保C:\Rtools\bin
位于Windows中的PATH
环境变量中。
然后,使用wc
或system
,R可以使用shell
:
shell('wc -l "D:/text_file.txt"',intern =TRUE)