首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >windows中R内存管理的问题。我可以在循环中重新启动r吗?

windows中R内存管理的问题。我可以在循环中重新启动r吗?
EN

Stack Overflow用户
提问于 2017-01-22 21:58:48
回答 1查看 472关注 0票数 0

我遇到了一个基本的R问题(bug?)。

问题是我正在参与R包的开发,并且有一个相当复杂的功能。当我运行这个函数时,它在内存中留下了大量的垃圾,而gc()只能部分地清除这些垃圾。因此,当我想在循环中运行这个函数时,在第2-3次迭代中发生的情况是,R消耗12-16 12,并由于内存不足而停止工作。

这个问题是Windows特有的,因为我的合作者不能在LINUX下重现这个问题。因此,我的问题是:我可以在循环中执行R重新启动吗?

我知道这将删除所有变量,但这正是我所需要的。

例如,一个好的解决方案是编写一个脚本,调用R会话,执行函数,然后关闭R会话。

EN

回答 1

Stack Overflow用户

发布于 2017-01-22 22:35:11

你的问题是重复的,可能很快就会被标记出来,但在那之前,这可能是你最好的选择():

尝试将以下行之一放入.Rprofile文件中:

代码语言:javascript
复制
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 questionand another.Here's a great article about memory management in R

在询问之前一定要先用谷歌搜索。所有这些都很快就被找到了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41791788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档