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

> code1()

假定code1()在控制台上不打印任何内容,但是上述code1()需要一个小时才能完成。我想在等待code1()的同时做其他事情。可能吗?是否有像runInBackground这样的函数可以按以下方式使用
> runInBackground(code1())
> code2()

替代方案是运行两个RStudio或编写一个使用Rscript来运行code1()的批处理文件,但我想知道是否可以做一些更简单的事情而不离开RStudio控制台。我试图浏览R的帮助文档,但没有提出任何建议(或者可能是我没有使用正确的关键字)。

最佳答案

future package(我是作者)提供了以下内容:

library("future")
plan(multisession)

future(code1())
code2()

仅供引用,如果您使用
plan(cluster, workers = c("n1", "n3", "remote.server.org"))

然后在其中一台计算机上解析将来的表达式。使用
plan(future.BatchJobs::batchjobs_slurm)

将导致它通过Slurm作业计划程序队列来解决。

这个问题与Run asynchronous function in R密切相关

10-08 13:31