簡體   English   中英

超出R的內存限制(即使使用24GB RAM)

[英]Exceeding memory limit in R (even with 24GB RAM)

我試圖合並兩個數據幀:一個有33個變量的908450個觀測值,另一個有2個變量的908450個觀測值。

dataframe2 <-merge(dataframe1, dataframe2, by="id")

我已經清除了工作內存中的所有其他數據幀,並使用以下代碼重置了我的內存限制(對於具有24 GB RAM的全新桌面):

memory.limit(24576)

但是,我仍然得到錯誤Cannot allocate vector of size 173.Mb

有關如何解決這個問題的任何想法?

要跟進我的評論,請使用data.table 我整理了一個與您的數據匹配的快速示例來說明:

library(data.table)

dt1 <- data.table(id = 1:908450, matrix(rnorm(908450*32), ncol = 32))
dt2 <- data.table(id = 1:908450, rnorm(908450))
#set keys
setkey(dt1, id)
setkey(dt2, id)
#check dims
> dim(dt1)
[1] 908450     33
> dim(dt2)
[1] 908450      2
#merge together and check system time:
> system.time(dt3 <- dt1[dt2])
   user  system elapsed 
   0.43    0.03    0.47 

因此合並不到1/2秒。 我拍了一張前后截圖,看着我的記憶。 在合並之前,我使用了3.4演出的ram。 當我合並在一起時,它跳到了3.7並且趨於平穩。 我認為你很難找到更多的記憶或時間效率。

之前: 在此輸入圖像描述

后: 在此輸入圖像描述

據我所知,有三種解決方案:

  • 使用數據表
  • 使用交換內存(可在* nix機器上調整)
  • 使用抽樣

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM