如何将固定内存大小分配给R中的变量

mah*_*ran 9 memory-management r

我有一个变量,其大小从几MB增加到3 GB循环.我的内存错误.我已经尝试了一些解决方案,比如增加R可以使用的内存量,也使用rm()和gc().我想如果我首先为这个变量分配3GB就可以解决它.现在:

  1. 有可能R吗?

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

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

我有一个64位Windows 7操作系统.我的代码超过千行.但关键是

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

2.使用临时变量合并主变量

thc*_*thc 1

如果没有看到具体的代码,很难知道什么会有帮助。但是,如果您在 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 
Run Code Online (Sandbox Code Playgroud)