2017-03-23 47 views
1

我試圖讀取使用fread一個7.7GB文件後讀取CSV,但我得到的是表明它停止只能通過文件中獲取後中途讀取錯誤:FREAD停止4GB

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

+0

Th錯誤消息說輸入文件中有一個空行導致它停止。是這樣嗎?你是否期望輸入中有空行? – MrFlick

+0

好問題。這是消極的;我確認文件中沒有空白行。 – user5568265

+1

你可以試試'blank.lines.skip = TRUE'來檢查它是否有效 –

回答

0

好吧,這很尷尬。事實證明,我針對錯誤的文件運行fread - 一個恰好爲4 GB的文件,因爲在解壓縮失敗操作期間它被截斷。

真正的文件實際上位於不同的位置,但這兩個文件命名相同並具有相似的路徑,所以我將它們混合起來。

當我fread'編了一個真正的7.7GB文件,一切都按預期工作。