我遇到了一个基本的R问题(bug?)。
问题是我正在参与R包的开发,并且有一个相当复杂的功能。当我运行这个函数时,它在内存中留下了大量的垃圾,而gc()只能部分地清除这些垃圾。因此,当我想在循环中运行这个函数时,在第2-3次迭代中发生的情况是,R消耗12-16 12,并由于内存不足而停止工作。
这个问题是Windows特有的,因为我的合作者不能在LINUX下重现这个问题。因此,我的问题是:我可以在循环中执行R重新启动吗?
我知道这将删除所有变量,但这正是我所需要的。
例如,一个好的解决方案是编写一个脚本,调用R会话,执行函数,然后关闭R会话。
发布于 2017-01-22 22:35:11
你的问题是重复的,可能很快就会被标记出来,但在那之前,这可能是你最好的选择():
尝试将以下行之一放入.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。
在询问之前一定要先用谷歌搜索。所有这些都很快就被找到了。
https://stackoverflow.com/questions/41791788
复制相似问题