R - 在后台运行source()

Vin*_*han 10 background r

我想从R控制台在后台执行R脚本.

从控制台,我通常运行R脚本作为源('〜/ .active-rstudio-document')我必须等到脚本完成后继续我的其余工作.而不是这个我希望R在后台运行,而我可以在控制台继续我的工作.当R完成源命令时,我应该以某种方式通知我.这可能在R?

这可能非常有用,因为我们经常看到工作需要很长时间.

PS - 我希望源脚本在相同的内存空间而不是新的内存空间中运行.因此,像fork,system等解决方案对我来说不起作用.我看到我是否可以将R脚本作为单独的线程运行而不是单独的进程.

The*_*ras 19

您可以使用system()和Rscript将脚本作为异步后台进程运行:

system("Rscript -e 'source(\"your-script.R\")'", wait=FALSE)
Run Code Online (Sandbox Code Playgroud)

在脚本结束时,您可以保存对象save.image()以便以后加载它们,并通过以下方式通知它的完成cat():

...
save.image("script-output.RData")
cat("Script completed\n\n")
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

  • R 是单线程的。如果您需要,Revolution Analytics (www.revolutionanalytics.com) 有一个商业多线程版本的 R。但是您确定需要它吗?我的意思是你的脚本本身可以加载它需要的数据,我猜你只需要使用脚本的最终输出,而不是任何中间输出。 (2认同)
  • 如果您传递系统命令来运行脚本。您只需要“Rscript the_script.R”源,不需要。 (2认同)