我正在尝试使用 system2() 从 R 中调用一个简单的 python 脚本。我已经阅读了一些我发现含糊不清的信息,即如果使用了“太多”内存,它将无法正常工作。
如果我加载一个大型数据集并使用其中的一些信息作为参数传递给 system2(),那么只有在调用 Rstudio 中手动单击“重新启动 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)
}
这个答案并没有得到我想要的。也就是说,它在 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") }
我尝试了上面这两个选项的多种变体,但这对于一个简单的问题来说已经很长了。关于启动过程我还有很多不明白的地方,“makeActiveBinding”有点神秘。谁能指出我正确的方向?