rstudio - 可以在后台运行代码

时间:2013-12-15 16:26:09

标签: r rstudio

关于RStudio的问题。假设我在控制台中运行代码:

> code1()

假设code1()在控制台上没有打印任何内容,但上面的code1()需要一个小时才能完成。在等待code1()的时候,我想继续处理其他事情。可能吗?是否有像runInBackground这样的函数,我可以使用如下

> runInBackground(code1())
> code2()

备选方案正在运行两个RStudios或编写一个使用Rscript来运行code1()的批处理文件,但我想知道如果不离开RStudio控制台我能做些什么更容易。我试图浏览R的帮助文档,但没有提出任何东西(或者可能是我没有使用正确的关键字)。

4 个答案:

答案 0 :(得分:10)

future package(我是作者)提供了这个:

library("future")
plan(multiprocess)

future(code1())
code2()

仅供参考,如果您使用

plan(cluster, workers = c("n1", "n3", "remote.server.org"))

然后在其中一台机器上解析未来的表达式。使用

plan(future.BatchJobs::batchjobs_slurm)

将导致它通过Slurm作业调度程序队列解析。

此问题与Run asynchronous function in R

密切相关

答案 1 :(得分:6)

您可以随时执行此操作,但这并非理想,但适用于大多数用途:

shell(cmd = 'Rscript.exe some_script.R', wait=FALSE)

答案 2 :(得分:5)

parallel包中的mcparallel()函数可以解决问题,如果你在Linux上,那就是......

library(parallel)
Job1 = mcparallel(code1())
JobResult1 = mccollect(Job1)

答案 3 :(得分:0)

1.2版的RStudio提供了此功能。要在后台运行脚本,请在“作业”面板中选择“开始作业”。您还可以选择将后台作业结果复制到工作环境中。