2016-01-20 258 views
2

我有許多不同大小的csv文件,但都很大。使用read.csv將它們讀入R花費的時間比我一直耐心等待的時間要長(幾個小時)。我設法用data.tablefread以非常快的速度(不到一分鐘)讀取最大的文件(2.6 GB)。讀取R中的大型csv文件

當我嘗試讀取一半大小的文件時,出現了我的問題。我收到以下錯誤信息:

錯誤fread("C:/Users/Jesper/OneDrive/UdbudsVagten/BBR/CO11700T.csv",:

期待21周的cols,但行2557包含了處理所有 的cols後的文本。這很可能是由於一個或多個字段在非平衡 未轉義報價中嵌入了sep=';'和/或(未轉義)'\n'字符。

fread無法處理這種模棱兩可的情況,並且那些 行可能沒有按預期讀入。請閱讀 上的引用部分? fread

通過研究,我發現了將代碼quote = ""添加到代碼中的建議,但它對我沒有幫助。我試過使用bigmemory軟件包,但是當我嘗試時R會崩潰。我在一個帶有8 GB內存的64位系統上。

我知道這個問題上有很多線索,但我還沒有能夠解決任何解決方案的問題。我真的很想使用fread(鑑於我對較大文件有良好的體驗),似乎應該有一些方法可以使其工作 - 只是無法弄清楚。

+6

似乎是與'CO11700T.csv'裏面有什麼不一樣大的問題 – mtoto

+3

您最好的選擇是看看第2557行可能使用bash或類似的例如頭部-2557 C011700.csv |尾巴-1'並剪切或手動編輯 –

+2

@StephenHenderson給出了它看起來像Windows的路徑,所以他們可能會遇到'head'和'tail'的麻煩......(是的,安裝cygwin) – Spacedman

回答

1

通過安裝SlickEdit解決這個問題,並使用它來編輯導致問題的線條。像&符號,引號和撇號等幾個字符一直編碼爲包含分號 - 例如而不僅僅是&。由於分號是文本文檔中的分隔符,因此使用fread進行讀取時出現問題。