在Rstudio中重新启动R.

Ben*_*ter 35 r rstudio

我正在尝试使用system2()从R中调用一个简单的python脚本.我已经阅读了一些我发现含糊不清的信息说如果使用'太多'内存,它将无法正常工作.

如果我加载一个大型数据集并使用其中的一些信息作为参数传递给system2(),它只有在我调用Rstudio中手动点击"Restart R"时才有效.

我想要的是:

df <- read.csv('some_large_file.csv')
###extracting some info called 'args_vec'
for(arg in args_vec){
    system2('python', args)
}
Run Code Online (Sandbox Code Playgroud)

这不会按原样运作.简单地传递for循环.

我需要的:

df <- read.csv('some_large_file.csv')
###extracting some info called 'args_vec'
###something that 'restarts' R
for(arg in args_vec){
    system2('python', args)
}
Run Code Online (Sandbox Code Playgroud)

这个答案并没有得到我想要的.也就是说,它在Rstudio中对我不起作用,并且它称为"system"(在这种情况下它提出与"system2"相同的问题).事实上,当我将上面引用的答案放在我的Rprofile.site文件中时,它立即关闭了rstudio:

我尝试将该建议作为正常函数(而不是使用"makeActiveBinding",并且它没有完全奏效.

##restart R in r session  -- doesn't work
makeActiveBinding("refresh", function() { system("R --save"); q("no") }, .GlobalEnv)

##nor did this:
refresh <- function() { system("R --save"); q("no") }
Run Code Online (Sandbox Code Playgroud)

我尝试了上面这两个选项的多种变体,但这对于一个简单的问题感觉很长.关于启动过程还有很多我还不了解,"makeActiveBinding"有点神秘.谁能指出我正确的方向?

mgo*_*ser 61

在Rstudio中,您可以通过以下方式重新启动R会话:

command/ctrl + shift + F10 
Run Code Online (Sandbox Code Playgroud)

您还可以使用:

.rs.restartR()
Run Code Online (Sandbox Code Playgroud)

  • 这并不能回答问题,因为他们似乎想要一个命令行 (2认同)

Art*_*hur 9

RStudio有这个没有文档的rs.restartR(),应该这样做:重启R.

但是,它不会卸载已加载的软件包,也不会清理环境,因此我对是否重新启动R有一些疑问.

  • 它确实释放了曾经用完的所有内存,但是后来被释放了……所以它确实做了一些事情(在某些情况下非常有用)。 (2认同)

小智 0

您是否尝试过将函数调用嵌入到 apply 函数中,而不是 for 循环?

我有一些代码片段在 for 循环中使系统内存不足,并且与 apply 完美运行。可能有帮助吗?