我想知道使用 data.table fread 函数可以读取的行数是否有限制。我正在处理一个有 40 亿行、4 列、大约 40 GB 的表。看起来 fread 只会读取前 8.4 亿行。它没有给出任何错误,而是返回到 R 提示符,就好像它已经读取了所有数据一样!
我知道 fread 目前不适合“产品使用”,并且想了解是否有任何时间框架来实施产品发布。
我使用 data.table 的原因是,对于这种大小的文件,与将文件加载到 data.frame 等相比,它在处理数据方面非常有效。
目前,我正在尝试其他 2 种选择 -
1)使用扫描并传递给data.table
data.table(matrix(scan("file.csv",what="integer",sep=","),ncol=4))
Resulted in --
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
too many items
2)将文件分成多个单独的段,限制为大约。使用 Unix 拆分 5 亿行并按顺序读取它们……然后将文件按顺序循环到 fread - 有点麻烦,但似乎是唯一可行的解决方案。
我认为可能有一种 Rcpp 方法可以更快地做到这一点,但我不确定它是如何实现的。
提前致谢。