Appearance
Rstudio后台运行任务指南
不会shell语句提交后台任务??不想长时间等待RStudio加载??全局变量数据过大,Rsession繁忙,都有可能导致Rstudio转圈,转圈的实质其实就是在疯狂加载数据,我们可以使用后台运行的方式,避免全局变量数据大,并且在关闭RStudio的界面时也在运行。
如何提交RStudio后台任务
后台作业是一个运行在单独的、专用的R会话中的R脚本。任何R脚本都可以在单独的会话中运行使用RStudio自带的提交后台任务功能

在 Jobs 面板中选择“Start Background Job”提交脚本。
默认情况下,作业在一个干净的R会话中运行,当作业完成时,它的临时工作区将被丢弃。这是最快和最安全的配置,适合无副作用的可重复脚本。因为作业是作为当前会话的子进程运行的,所以在进程级或shell级设置的任何环境变量都会从主会话传递给后台作业。
点击Start Background Job按钮,会弹出下面的弹窗,进行脚本以及工作目录、环境变量设置。

在此选择脚本、工作目录以及是否传入当前环境。
关于Environment的两个选择:
Run job with copy of global environment: 使用全局环境的副本运行作业
如果选中此选项,则保存全局环境,并在运行之前将其加载到作业R会话中。这很有用,因为它将允许您的作业看到您可以在IDE中看到的所有相同变量。注意,如果您的环境中有大型对象,这可能会很慢。
Copy job results:复制作业结果
默认情况下,不保存运行作业的临时工作区。如果您想将数据从作业导入到R会话中,您有两个选择:
Global environment:全局环境
这会将作业创建的所有R对象放回到R会话的全局环境中。
Results object:Results对象
这会将作业创建的所有R对象放入一个新环境中,该环境以以下模式命名:环境名_results。例如,作为后台作业执行的标题为test.R的脚本将作为标题为test_results的对象保存回全局环境中。
另一个选项是包含特定的R代码,以便将结果保存到磁盘上的文件中,例如saveRDS(object, "results.rds")。
关于提交的一些事项
如果是提交的R脚本,一定一定要注意保存,不保存的话提交的还是未保存的脚本!!!
如果在提交时报错:

提交前的语法检查发现错误时,作业不会启动。
这是Rstudio会对脚本文件进行一次解析和语法检测,如果语法有错误,就会报错Error in parse(file = script, keep.source = TRUE, encoding = encoding)。
当后台作业正在运行时,R控制台中会出现一个进度条,汇总所有正在运行的作业的进度。

Jobs 面板会汇总显示正在运行的后台作业。
RStudio为您的作业显示的进度条表示R脚本中每个顶级语句的执行。如果你想更深入地了解脚本的哪一部分正在运行,您可以使用rstudio的代码段特性。像这样在您的R脚本中添加一个段落标记:
r
# 5e8 ----当作业到达脚本中的那一行时,区段的名称将出现在进度条上。

为代码添加段落标记后,可在进度中定位当前执行阶段。
您还可以使用通常的R机制发出输出,例如:print,message,cat
当您选择作业时,此输出将显示在Jobs窗格中。

选择某个作业后,可在 Jobs 面板查看 `print()`、`message()` 或 `cat()` 的输出。
我们可以同时提交多个后台任务,只要确保代码之间不会相互干扰,特别是写入同一个文件。
当然,也得注意控制资源的占用,小心OOM。
