我是R的新手,但我意識到它會扼殺「大」文件。我正在嘗試讀取一個200MB的數據文件。我已經嘗試了它的CSV格式,並將其轉換爲製表符分隔txt,但在這兩種情況下,我用完我的4GB的RAM加載文件之前。將大文件讀入R
R正常情況下會使用4GB或內存來加載200MB文件,或者文件可能有問題,並且導致R除了讀取數據外,還會繼續讀取一堆虛無?
我是R的新手,但我意識到它會扼殺「大」文件。我正在嘗試讀取一個200MB的數據文件。我已經嘗試了它的CSV格式,並將其轉換爲製表符分隔txt,但在這兩種情況下,我用完我的4GB的RAM加載文件之前。將大文件讀入R
R正常情況下會使用4GB或內存來加載200MB文件,或者文件可能有問題,並且導致R除了讀取數據外,還會繼續讀取一堆虛無?
從?read.table
Less memory will be used if colClasses is specified as one of the six atomic vector classes.
...
Using nrows, even as a mild over-estimate, will help memory usage.
使用這兩種論點。
確保您爲您的數字數據正確指定numeric
。看到這裏:Specifying colClasses in the read.csv
而且不要低估預算。
如果您正在運行64位R,則可以嘗試32位版本。它將使用較少的內存來保存相同的數據。
爲什麼你提到'nrows',但不是'colClasses'?將數字作爲字符串存儲非常低效,調用'type.convert'會導致不必要的重複。你怎麼知道'read.table'是最好的函數? OP甚至沒有告訴你他們的數據是什麼樣子的(例如,如果它只是一個矩陣,'scan'可能是更好的解決方案)。 –
@JoshuaUlrich好點。謝謝。 –
read.table(「myfile.csv」,header = TRUE) – Oliver
1)200MB遠不在「大」附近。 2)您使用什麼函數來讀取文件(並且您是否閱讀了該函數的幫助頁面)? 3)文件中有哪些數據? 4)您是否搜索過SO(我通過搜索「[r]大文件」發現了幾個相關的問題/答案)。 5)你讀過[R Data Import/Export](http://cran.r-project.org/doc/manuals/R-data.html)嗎? –
並向我們提供可重現的代碼片段,以顯示您的問題。一個200 MB的csv文件通常不應占用4 GB。 –
我嘗試使用基本的方法來讀取文件,因爲它是我所知道的:read.table(「myfile.csv」,header = TRUE)或用於我使用read.table(「myfile.txt」, sep =「\ t」,header = TRUE)。有200多列主要有單個字母或小數字。可悲的是,中間有一大羣變種,這些變種都是稀疏的。 – Oliver