我想通过使用system2()在R中调用一个简单的Python脚本。我读到一些含糊的信息,说如果使用了“太多”的内存,它就不起作用。
如果我加载了一个大型数据集,并使用其中的一些信息作为参数传递给system2(),只有当我手动点击“重新启动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”也有点神秘。有人能指导我吗?
rm(list=ls())
清理工作区,然后再用gc()
进行手动垃圾回收,那应该就足够了吧? - Jouni Helskeq
。去掉对q
的调用,它应该与在RStudio中选择“重新启动R”完全相同。 - Matthew Plourde