我有一个变量,其大小在循环中从几 MB 增长到 3 GB。我得到了内存错误。我尝试了一些解决方案,例如增加 R 可以使用的内存量,也使用 rm() 和 gc()。我想如果我一开始分配3GB给这个变量是否可以解决。现在:
在
R
中可能吗?如果是这样,速度会提高吗?
是否有可能解决内存不足错误
我有 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/