2026-08-22 09:39:44

我正在尝试使用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“这个词有点神秘。有谁能给我指个方向吗?