r - 如何为 R 中的变量分配固定内存大小

标签 r memory-management

我有一个变量,其大小在循环中从几 MB 增长到 3 GB。我得到了内存错误。我尝试了一些解决方案,例如增加 R 可以使用的内存量,也使用 rm() 和 gc()。我想如果我一开始分配3GB给这个变量是否可以解决。现在:

  1. R中可能吗?

  2. 如果是这样,速度会提高吗?

  3. 是否有可能解决内存不足错误

我有 64 位 Windows 7 操作系统。 我的代码有一千多行。但关键是

1.通过odbcConnectAccess2007和sqlFetch函数从访问文件中获取数据并将表放入临时变量中

2.将主变量与临时变量合并

最佳答案

如果没有看到具体的代码,很难知道什么会有帮助。但是,如果您在 for 循环中调用 rbind/cbind/merge,则效率极低。您可以做的是将所有内容放入列表中,然后在最后使用 do.call 。比较:

data_list <- list(); 
length(data_list) <- 2000

for(i in 1:2000) {
    data_list[[i]] <- data.frame(matrix(runif(11*10), ncol=11, nrow=10))
}


sequentialRbind<-function() {
    res <- data_list[[1]]
    for(i in 2:length(data_list)) {
        res <- rbind(res, data_list[[i]])
    }
    return(res)
}

> system.time(res1 <- do.call(rbind,data_list))
   user  system elapsed 
   0.78    0.00    0.78 
> 
> system.time(res2 <- Reduce(rbind,data_list))
   user  system elapsed 
   8.24    0.00    8.27 
> 
> system.time(res3 <- sequentialRbind())
   user  system elapsed 
   8.25    0.00    8.27 

关于r - 如何为 R 中的变量分配固定内存大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30543715/

相关文章:

android - 减少 Android 应用程序的内存使用

递增指针会导致内存泄漏吗?

r - 在pdf输出中进行编织时,如何在R Markdown中对文本进行正反对齐

r - R 中的连接矩阵

java - biomod2 警告消息 : running command 'java' had status 1

R hist 右/左簇合并

java - Java 中的内部 block 如何访问应该超出范围的局部变量? (JVM 如何处理 Java 中的最终局部变量)

python-3.x - 为什么 python 字符串连接最省内存?

python - Python 列表(元组)中每个元素有多少字节?

r - 如何在 R 编程中指定决策树中的分割?