我正在尝试使用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)
}
这不会按原样运作。简单地传递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)
}
This answer并不能得到我想要的东西。也就是说,它在Rstudio中对我不起作用,并且它称为“系统”(在这种情况下它表现出与“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") }
我尝试了上面这两个选项的多种变体,但这对于一个简单的问题感觉很长。关于启动过程还有很多我还不了解,“makeActiveBinding”有点神秘。有人能指出我正确的方向吗?
答案 0 :(得分:55)
在Rstudio中,您可以通过以下方式重新启动R会话:
command/ctrl + shift + F10
您也可以使用:
.rs.restartR()
答案 1 :(得分:8)
RStudio有这个没有文档的rs.restartR()
,应该这样做:重启R。
但是,它不会卸载已加载的软件包,也不会清理环境,因此我对是否重新启动R有一些疑问。
答案 2 :(得分:0)
您是否尝试在apply函数中嵌入函数调用,而不是for循环?
我有一些代码片段在for循环中运行系统内存完全与apply一起运行。这可能有帮助吗?
答案 3 :(得分:0)
如果使用RStudio,请使用菜单项“会话”>“重新启动R”或相关的键盘快捷键Ctrl+Shift+F10
(对于Windows和Linux)或Command+Shift+F10
(对于Mac OS)。其他键盘快捷键使您可以轻松地从中断的地方重新开始开发,例如说“重新运行所有代码,直到此处”:
在R脚本中,使用Ctrl+Alt+B
(Windows和Linux)或Command+Option+B
(Mac OS)
在R降价中,使用Ctrl+Alt+P
(在Windows和Linux中)或Command+Option+P
(在Mac OS中)
如果从外壳运行R,请使用Ctrl+D
或q()
退出,然后重新启动R。