2009-12-09 27 views
24

我正在處理一個大數據框,並且已經運行了內存限制。此時,我可能需要使用磁盤上的序列化版本。有a few packages來支持內存不足的操作,但我不確定哪一個適合我的需求。我寧願將所有數據都保存在數據框中,因此ff包看起來令人鼓舞,但仍然存在兼容性問題,我無法解決。存儲和使用數據幀對於內存來說太大的最佳做法?

當您意識到您的數據已達到內存不足規模時,第一個達到的工具是什麼?

回答

26

你可能想看看這些軟件包:

  • ff爲「平面文件的存儲和非常高效的檢索(可以做data.frames;不同的數據類型)
  • bigmemory對於超出的-R內存,但仍然在RAM(或文件備份)使用(只能做矩陣;相同的數據類型)
  • biglm用於與lm()glm()樣式模型的內存不足模型擬合。

並且還請參閱High-Performance Computing任務視圖。

0

如果你正在處理的內存問題,你應該嘗試以下步驟:

  1. 清除額外的過程,消耗RAM。確保你沒有打開瀏覽器,因爲它們看起來消耗了大量的RAM。

  2. 完成step1後,瞭解數據集文件的結構。爲此,請使用read.csv(nrow = 100)。通過這樣做,您將會知道什麼是列和列結構。如果您發現任何不適用的列,請將其刪除。

  3. 一旦知道了列結構(colclasses)可以一氣呵成導入整個數據幀..

下面是示例代碼:

initial <- read.table("datatable.txt", nrows = 100) 
classes <- sapply(initial, class) 
tabAll <- read.table("datatable.txt", colClasses = classes) 
  • 使用fread()讀取大數據幀。

  • 如果仍然沒有解決問題,則將數據集分爲兩部分,將行數分成兩個相等的部分,然後在應用維度降低技術後合併它們。

  • 我希望它有幫助。

    相關問題