一是管理内存分配,这个问题是不是R:在循环
Error: cannot allocate vector of size n
我接受这个错误是给定的,我试图避免该错误代码
我有3000+变量和120000箱子
所有列是数字的数据集
我需要将0重置为零
如果我将整个数据集的值重新分配为0,则会得到内存 分配错误。
所以我在同一时间重新分配的值为零一列:`
resetNA <- function(results) { for (i in 1:ncol(results)) { if(i>10) { results[,i][is.na(results[,i])] <- 0 } } print(head(results)) }
后约1000列,我仍然得到内存分配错误。
现在,这对我来说似乎很奇怪。不知何故,内存分配在每个循环后递增。但是,我不明白为什么会这样。
此外,我试过每次循环后调用垃圾收集功能,我仍然得到了内存分配错误。
有人可以向我解释我如何管理变量以避免内存分配的增量增加(毕竟,数据帧大小没有改变)。
将您的数据分割成列表,将函数应用到列表中,然后重新组合 –
谢谢,我会试试看。但是,你能解释为什么这个循环导致增量内存分配? – Jake
也请随时发布答案,我会upvote。我讨厌张贴对我自己的问题的答案,但讨厌留下一个问题未回答更多 – Jake