2013-10-10 56 views
2

我想追加一個月的數據(200k)行到一個已經是16m行的data.frame,並且在我的系統上達到了R內存限制:追加到大型data.frame並打內存限制

d = rbind(d, n) 
Error: cannot allocate vector of size 60.8 Mb 
In addition: Warning messages: 
1: In rbind(deparse.level, ...) : 
    Reached total allocation of 8072Mb: see help(memory.size) 

memory.sizememory.max分別報2187.88和8072,所以我認爲我使用我所有的8GB的系統內存。使用JD Long in this question詳細的對象存儲報告功能,我得到了以下報告:

  Type   Size  Rows Columns 
d  data.table 2,231,877,576 15941535  26 
files character   912  13  NA 
i  numeric   48  1  NA 
n  data.frame 28,176,000 213116  26 

有另一種方式來追加到並不意味着這似乎明顯的目標複製一個data.frame要發生和飲食up內存?我熱衷於避免追加到csv文件,因爲我正在使用.RData保存的對象來更快地讀入數據。

回答

3

如果您使用的是data.table物品,您應該使用rbindlist來避免製作data.table的不必要副本。這應該工作...

d = rbindlist(d, n)