我正在尝试使用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)
RStudio有这个没有文档的rs.restartR(),应该这样做:重启R.
但是,它不会卸载已加载的软件包,也不会清理环境,因此我对是否重新启动R有一些疑问.