我正在尝试使用system2()从R中调用一个简单的python脚本。我读了一些我发现的模糊的信息,说如果使用了太多的内存,它就不会工作。
如果我加载一个大型数据集,并使用其中的一些信息作为参数传递给system2(),那么它只有在我手动单击call Rstudio中的"Restart R“时才能工作。
我想要的:
代码语言:javascript复制df <- read.csv('some_large_file.csv')
###extracting some info called 'args_vec'
for(arg in args_vec){
system2('python', args)
}这不会按原样工作。for循环被简单地忽略了。
我需要的是:
代码语言:javascript复制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中不适用于我,它调用"system“(在本例中,它出现了与"system2”相同的问题)。事实上,当我把上面提到的答案放到我的Rprofile.site文件中时,它立即关闭了rstudio:
我尝试了这个建议作为一个普通的函数(而不是使用"makeActiveBinding",它并不是很有效。
代码语言:javascript复制##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“这个词有点神秘。有谁能给我指个方向吗?