微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

fread from data.table实际上在进行读取整个文件之前相当快地(约10秒)出现行号:

fread('D:/text_file.txt',select=1,colClasses="character") Read 7.1% of 472933221 rows #number of rows appears after 10 seconds

有没有办法提取这个行号,而不读取整个文件后? 为了logging,读取整个文件需要36秒。

我已经尝试了countLines的R.utils但它需要53秒。 区别可能是fread有一个选项只能select一列,countLines读取所有内容

函数/包中使用data.table(使用roxygen)

R崩溃write.csv()为data.table

如何在安装在redhat linux服务器上的Rstudio上安装`data.table 1.9.3`的开发版本?

R:列表中的快速哈希search(环境)

是否有一个fread模拟从标准input读取?

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

我也尝试了其他Windows方法,如:

find /v /c "" "D:text_file.txt" #takes 1 minute 50 seconds grep "^" D:text_file.txt | wc -l #takes 2 minutes

这些工作,但他们不如fread快。 我在Windows上。

安装新版本的data.table(特别是来自Rforge的1.8.11)

@db问我提供一个详细的答案,我自己的问题。 作为@G。 Grothendieck建议,答案是使用wc ,它是Rtools的一部分, Rtools是在Microsoft Windows下为R构建软件包的资源集合。

安装完成后,确保C:Rtoolsbin在Windows环境变量的PATH中。

然后,使用system或shell将wc变为可用:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐