【发布时间】:2013-06-20 16:00:36
【问题描述】:
目前我正在处理相对较大的数据文件,并且我的计算机不是超级计算机。我正在临时创建这些数据集的许多子集,并且不会将它们从工作区中删除。显然,这些因素使许多变量变得混乱。但是,有许多未使用的变量对 R 的性能有什么影响吗? (即计算机的内存是否会在某个时候填满?)
在编写代码时,我应该养成删除未使用变量的习惯吗?值得吗?
x <- rnorm(1e8)
y <- mean(x)
# After this point I will not use x anymore, but I will use y
# Should I add following line to my code? or
# Maybe there will not be any performance lag if I skip the following line:
rm(x)
我不想在我的代码中添加另一行。与其让我的代码看起来杂乱无章,我更喜欢我的工作区杂乱无章(如果没有性能改进的话)。
【问题讨论】:
-
也可以使用
gc()函数让R进行垃圾回收。我发现这在删除大对象后很有用,因为 R 在删除对象后似乎不会立即恢复内存。 -
最小化中间对象的创建也不错。显然,在您的示例中,您可以直接转到
y <- mean(rnorm(1e8))。我发现magrittr 的管道非常有助于组合我以前保存到临时变量的步骤。
标签: performance r variables memory