fread在4GB后停止读取CSV

时间:2017-03-23 15:27:05

标签: r large-files

我试图使用fread读取一个7.7GB的文件,但是我收到一个错误,表明它只是在中途通过该文件后停止了读取:

cdr <- fread('/path/to/data.csv')
Read 1687 rows and 610989 (of 610989) columns from 4.000 GB file in 00:02:37
Warning message:
In fread("/path/to/data.csv") :
 Stopped reading at empty line 1688 but text exists afterwards (discarded)

cdr <- fread('/path/to/data.csv', nrows = 2000)
Read 0.0% of 2000 rows
Error in fread("/path/to/data.csv", nrows = 2000) : 
 Expected sep (',') but new line or EOF ends field 500054 on line 1688 when reading data

请注意,错误消息显示文件大小为4.000 GB,但实际上为7.7 GB。同样,错误消息表明该文件有1687行,但实际上有3378行。

我仔细检查过,我可以确认此文件中没有空行(thanks @MrFlick for the suggestion)。

R在64位Ubuntu实例上运行,并且每https://stackoverflow.com/a/18091755/我检查.Machine$sizeof.pointer并获得8(我相信这表明我在64位中运行R )。

1 个答案:

答案 0 :(得分:0)

嗯,这很令人尴尬。事实证明我正在针对错误的文件运行fread - 一个恰好恰好是4 GB的文件,因为它在解压缩操作失败期间被截断了。

真实文件实际上位于不同的位置,但这两个文件的名称相同且路径相似,所以我把它们搞混了。

当我fread编辑真正的7.7GB文件时,一切都按预期工作。