我正在處理一個大數據框,並且已經運行了內存限制。此時,我可能需要使用磁盤上的序列化版本。有a few packages來支持內存不足的操作,但我不確定哪一個適合我的需求。我寧願將所有數據都保存在數據框中,因此ff
包看起來令人鼓舞,但仍然存在兼容性問題,我無法解決。存儲和使用數據幀對於內存來說太大的最佳做法?
當您意識到您的數據已達到內存不足規模時,第一個達到的工具是什麼?
我正在處理一個大數據框,並且已經運行了內存限制。此時,我可能需要使用磁盤上的序列化版本。有a few packages來支持內存不足的操作,但我不確定哪一個適合我的需求。我寧願將所有數據都保存在數據框中,因此ff
包看起來令人鼓舞,但仍然存在兼容性問題,我無法解決。存儲和使用數據幀對於內存來說太大的最佳做法?
當您意識到您的數據已達到內存不足規模時,第一個達到的工具是什麼?
你可能想看看這些軟件包:
lm()
和glm()
樣式模型的內存不足模型擬合。並且還請參閱High-Performance Computing任務視圖。
如果你正在處理的內存問題,你應該嘗試以下步驟:
清除額外的過程,消耗RAM。確保你沒有打開瀏覽器,因爲它們看起來消耗了大量的RAM。
完成step1後,瞭解數據集文件的結構。爲此,請使用read.csv(nrow = 100)。通過這樣做,您將會知道什麼是列和列結構。如果您發現任何不適用的列,請將其刪除。
一旦知道了列結構(colclasses)可以一氣呵成導入整個數據幀..
下面是示例代碼:
initial <- read.table("datatable.txt", nrows = 100)
classes <- sapply(initial, class)
tabAll <- read.table("datatable.txt", colClasses = classes)
使用fread()讀取大數據幀。
如果仍然沒有解決問題,則將數據集分爲兩部分,將行數分成兩個相等的部分,然後在應用維度降低技術後合併它們。
我希望它有幫助。