我想从R内使用system2()调用一个简单的python脚本。我读过一些我发现含糊不清的信息,说如果使用了“太多”的内存,它将无法工作。在Rstudio内重新启动R
如果我加载一个大型数据集并使用其中的某些信息作为参数传递到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”是否有点神秘。任何人都可以指向正确的方向吗?
你确定你确实需要重新启动整个R吗?如果使用'rm(list = ls())'来清理工作区,并且可能使用'gc()'手动垃圾收集以防万一,这应该足够了? – 2013-03-27 19:09:54
@BenHunter它会立即关闭RStudio,因为您在重新启动后调用'q'。取出呼叫到'q',它应该与在RStudio中选择重新启动R完全一样。 – 2013-03-27 19:42:53
@Hemmo,我知道这是一个选项,在这种情况下,它可能是一个不错的选择,但我真的想知道如何解决这个问题,而不会丢失我的工作空间(或保存,删除,然后重新加载它)。 – 2013-03-27 22:00:24