从R内退出并重新启动一个干净的R会话(Windows 7,RGui 64位)

时间:2013-11-08 16:22:36

标签: r session alias

我正在尝试从R内部退出并重新启动R.原因是我的工作占用了大量内存,并且没有一个用于清理R工作区的常用选项回收了由R.占用的RAM {{1 },gc()closeAllConnections()清除工作区,但是当我检查Windows任务管理器中的进程时,R对RAM的使用保持不变。重新启动R会话时回收内存。

我已经尝试过这篇文章的建议:

Quit and restart a clean R session from within R?

但它在我的机器上不起作用。它关闭R,但不会再打开它。我在Windows 7上通过RGui(64位)运行R x64 3.0.2。也许这只是上面帖子中第一行的简单调整:

rm(list = ls(all = TRUE))

但我不确定它是如何改变的。

这是代码。它不是完全可重现的,因为需要读入和删除大量文件。记忆的内容是makeActiveBinding("refresh", function() { shell("Rgui"); q("no") }, .GlobalEnv) ;其他一切都很小。在代码中,我将scrape函数应用于一个文件夹中的所有文件。最后,我想申请一组文件夹,每个文件夹都有大量文件(每个文件夹大约12,000个文件夹; 50多个文件夹)。目前这样做是不可能的,因为R很快耗尽了内存。

scrape.func()

非常感谢, 马尔科

1 个答案:

答案 0 :(得分:1)

我也进行了一些网页搜索,并像你一样直接遇到同样的问题,这让我发疯了。虽然我运行的是现代操作系统(Windows 10),但内存仍然不会不时发布。看了R FAQ后我去了CleanMem,你可以在这里每5分钟左右设置一个自动记忆清洁器。一定要用

rm(list = ls())
gc()
closeAllConnections()

之前让R释放内存。 然后使用CleanMem,以便操作系统注意到那里的空闲内存。