mah*_*ran 9 memory-management r
我有一个变量,其大小从几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
Run Code Online (Sandbox Code Playgroud)