【发布时间】:2017-10-10 23:01:16
【问题描述】:
首先,这个问题不是关于
错误:无法分配大小为 n 的向量
我接受这个错误作为一个给定的,我试图避免代码中的错误
我有一个包含 3000 多个变量和 120000 个案例的数据集
所有列都是数字
我需要将 NA 重置为零
如果我将整个数据集的值重新分配为 0,我将获得内存 分配错误。
-
所以我一次将值重新分配为零一列:`
resetNA <- function(results) { for (i in 1:ncol(results)) { if(i>10) { results[,i][is.na(results[,i])] <- 0 } } print(head(results)) }
大约 1000 列后,我仍然得到内存分配错误。
现在,这对我来说似乎很奇怪。不知何故,每次循环后内存分配都会增加。但是,我不明白为什么会这样。
另外,我尝试在每次循环后调用垃圾回收函数,我仍然得到内存分配错误。
谁能给我解释一下如何管理变量以避免内存分配的增量增加(毕竟数据帧大小没有改变)。
【问题讨论】:
-
将数据拆分为列表,将函数应用于列表,然后重新组合
-
谢谢,我试试看。但是你能解释一下为什么这个循环会导致内存分配增加吗?
-
另外,请随时发布答案,我会投票。我讨厌发布自己问题的答案,但更讨厌留下未回答的问题
-
每个赋值操作将至少创建整个对象的 2 个副本。有时需要显式调用垃圾回收:
?gc
标签: r