使用RScript重新启动环境

时间:2017-12-23 15:37:20

标签: r memory garbage-collection out-of-memory rscript

我有一个" Master R脚本"使用" source()"运行多个R脚本。它看起来像这样:

source("script1.R")
source("script2.R")
source("script3.R")
source("script4.R")
source("script5.R")
source("script6.R")
source("script7.R")
source("script8.R")

脚本1到8需要按顺序运行。这个" Master R脚本"计划使用cron和" Rscript"命令。

Rscript --verbose --vanilla "master_r_script.R" 

我的" Master R脚本"抛出"错误='无法分配内存'"运行几个R脚本后。我试过调用" rm(list = ls())"和" gc(verbose = TRUE,reset = TRUE)"在每一个"来源()"命令,但仍然没有解决问题。

我需要一种以某种方式"清理" R环境并释放内存。我当然可以分解" Master R脚本"进入多个" RScript调用"但我想避免这样做。

我怎样才能重新开始"由" Rscript"创建的会话。解决方案here不适用,因为他们正在重新启动R REPL会话。

1 个答案:

答案 0 :(得分:0)

简短答案:

您无法成功清除环境的主要原因是因为您(在R文件中)没有保存rm命令的结果。

扩展答案:

如果在Rscript [rm(list = ls())]和[gc(verbose = TRUE,reset = TRUE)]中使用以下命令,则需要在每个脚本中添加[load('。RData')]和[save.image('。RData')。

由于Rscript和R终端并不动态地充当与Rstudio相反的角色,因此每次Rscript不在运行状态时,它都不会记住环境的状态,但是运行Rscript当然会加载[.RData]将充当全球环境。

在[主脚本]中,您应该首先使用上述命令清理环境,或者使用单独的脚本作为源文件并包含“清理”。