r - 超过 R 中的内存限制(即使使用 24GB RAM)

标签 r memory memory-management dataframe

我正在尝试合并两个数据框:一个有 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 gigs 的 ram。当我合并在一起时,它跃升至 3.7 并趋于平稳。我认为您将很难找到比这更节省内存或时间的东西。

之前: enter image description here

之后:enter image description here

关于r - 超过 R 中的内存限制(即使使用 24GB RAM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11564775/

相关文章:

R markdown asis 破坏了有效的 html 代码

c++ - 混淆确定数组的元素数

apache-spark - Spark Driver 内存计算

java - 如何让这个java程序在多核上运行?

r - 如何基于 Shiny 的 react 变量的线性模型进行预测

python - pythonivot_table 的替代方案,用于两个变量的频率表

python - Django 应用程序消耗服务器中的内存

matlab - 函数句柄的内存大小 - MATLAB

c# - 为什么我的 C# 应用程序出现内存不足异常?

r - 用于在混合 logit 模型中将主题设置为随机效应的最直接的 R 包