gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 12:49:20 25 4
gpt4 key购买 nike

我有一个很大的文本文件(475,000,000 行)。我想在不读取文件的情况下快速获取文件中的行数。

fread 来自 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

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

我尝试了 R.utils 中的 countLines,但需要 53 秒。不同之处可能在于 fread 有一个选项可以只选择一列,而 countLines 会读取所有内容。

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 上。

最佳答案

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

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

然后,wc 可用于 R 使用 systemshell:

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

关于r - 从 fread 中提取行数而不读取整个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47369687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com