我遇到了似乎是一个基本的R问题(bug?)。
问题是我正在参与R包开发,并且有一个相当复杂的功能。当我运行这个函数时,它在内存中留下了很多垃圾,只有gc()部分清除了它。因此,当我想在循环中运行此函数时,发生的事情是在第2到第3次迭代中,R消耗12-16gb并由于内存不足而停止工作。
此问题是特定于Windows的,因为我的协作者无法在LINUX下重现它。因此我的问题是:我可以在循环中执行R重启。
我知道这将删除所有变量,但这就是我需要的。
E.g。一个好的解决方案是编写一个调用R会话的脚本,执行该函数然后关闭R会话。
答案 0 :(得分:1)
你的问题是重复的,可能会很快被标记,但在此之前,这可能是你最好的选择( from another question that is nearly identical to yours ):
尝试将其中一行放入.Rprofile文件中:
makeActiveBinding("refresh", function() { shell("Rgui"); q("no") }, .GlobalEnv)
makeActiveBinding("refresh", function() { system("R"); q("no") }, .GlobalEnv)
然后在R控制台中输入refresh
。它将关闭当前会话并启动一个新会话。
[Source]
这里有一些尝试:
从R:.rs.restartR()
内重新启动R,但是,这可能无法清除未使用的文件。您可能需要使用source()
或gc()
。
您可能需要从命令行运行它
Here's a post asking the same question,and another。 Here's a great article about memory management in R。
在询问之前总是谷歌。所有这一切都很快就找到了。