rstudio-是否可以在后台运行代码

rstudio-是否可以在后台运行代码,r,rstudio,R,Rstudio,关于RStudio的问题。假设我正在控制台中运行代码: > code1() 假设code1()在控制台上不打印任何内容,但是上面的code1()需要一个小时才能完成。我想在等待code1()的同时做些别的事情。可能吗?是否有类似于runInBackground的功能,我可以按如下方式使用 > runInBackground(code1()) > code2() 替代方法是运行两个RStudio或编写一个批处理文件,使用Rscript运行code1(),但我想知道是否有更简单

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

> code1()
假设
code1()
在控制台上不打印任何内容,但是上面的
code1()
需要一个小时才能完成。我想在等待
code1()
的同时做些别的事情。可能吗?是否有类似于
runInBackground
的功能,我可以按如下方式使用

> runInBackground(code1())
> code2()

替代方法是运行两个RStudio或编写一个批处理文件,使用
Rscript
运行
code1()
,但我想知道是否有更简单的方法可以不用离开RStudio控制台。我试图浏览R的帮助文档,但没有找到任何东西(或者可能是我没有使用正确的关键字)

您始终可以这样做,这并不理想,但适用于大多数用途:

shell(cmd = 'Rscript.exe some_script.R', wait=FALSE)
如果您使用的是Linux,那么包中的mcparallel()函数将完成此任务,即

library(parallel)
Job1 = mcparallel(code1())
JobResult1 = mccollect(Job1)
(我是作者)提供了以下内容:

library("future")
plan(multisession)

future(code1())
code2()
仅供参考,如果您使用

plan(cluster, workers = c("n1", "n3", "remote.server.org"))
然后在其中一台机器上解析未来表达式。使用

plan(future.BatchJobs::batchjobs_slurm)
将导致通过Slurm作业调度程序队列解决该问题


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

这是不可能的。R是单螺纹的。运行两个独立的R进程。另外,请不要将RStudio与R混为一谈。RStudio只是一个IDE。RStudio启动R本身的一个实例,该实例实际上正在运行您的代码。这意味着运行批处理文件应该成功。@Thomas认为R是单线程的,这并不意味着它不可能这样做。这仅仅意味着假设的
runinBackground
函数将在离开“main”时分叉一个新的单独的R线程线程无阻碍地继续修补。这很好-是否有任何方法可以从第二个任务打印到控制台,以在任务完成时通知用户?@BenJones您只需将代码包装到一个函数中,然后打印到屏幕:
包装器这仅在linux上?或者我们可以在Windows上运行任何操作系统我正在使用future运行API调用。但是,我没有状态码。有没有办法在future运行后获取状态代码?