【问题标题】:Writing code to: start an R session, run R script, terminate session, repeat编写代码:启动 R 会话、运行 R 脚本、终止会话、重复
【发布时间】:2013-04-05 15:21:19
【问题描述】:

我正在寻找一种简单的“设置并忘记它”的方式,可以作为终端中的单个参数字符串或简单的 Java 程序,以自动执行以下操作:

1) 开始一个 R 会话

2) 告诉 R 获取包含用于冗长并行模拟的代码的 .R 文件

3) 完成后终止 R 会话

4) 开始一个新的 R 会话

5) 告诉 R 获取其他 .R 文件

6) 完成后终止 R 会话

7) 起泡、冲洗、重复

我的 .R 脚本总共需要几天时间才能运行,在此期间我将出城并且无法检查它们,如果我在同一个会话中运行它们,我就无法避免用尽我的可用 RAM。

谢谢!

编辑:我在 Ubuntu 12.04 LTS 上运行 R 2.15.3,具有 16GB RAM

【问题讨论】:

  • 你试过Rscript.exe吗?在批处理脚本中使用它。
  • 为什么不直接使用 bash 脚本并通过 R --vanilla < ./script1.R && R --vanilla < ./script2.R 之类的方式执行每个 R 脚本?
  • rm(list = ls()); gc() 在源文件之间释放内存。
  • @sidoh 也许他希望动作以 R 输出为条件,并且从 Java 级别来看,它的结构似乎更简单?但是让我们问问他。
  • @sidoh:这正是我想要的!我想我需要复习一下我的终端命令...

标签: java r terminal


【解决方案1】:

使用Rscript 处理启动和终止 R 会话的过程。所以写你的脚本这样称呼它们:

Rscript script_1.R
Rscript script_2.R
...
Rscript script_Inf.R

剩下的第 2 点和第 5 点......这是一个简单的问题:

source('/home/sc_evans/script_abc.R')

...在任何脚本的开头。

每个脚本都将获得自己的 R 会话,该会话将在完成后终止。将这些命令放入批处理脚本并运行它。


编辑

如果我自己这样做,我会忘记使用单独的脚本。只要您正确管理内存,运行单个进程就可以正常工作。将您的流程划分为适当的功能:

massive_process_1 <- function() {
  x <- do_something()
  saveRDS(x, '/home/sc_evans/results/first_result.rds')      
}

massive_process_2 <- function() {
  x <- do_something()
  saveRDS(x, '/home/sc_evans/results/second_result.rds')      
}

massive_process_1()
massive_process_2()

等等。下一个函数在第一个函数完成之前不会运行,并且您的对象应该在函数中消失,因此您不应该耗尽内存。

【讨论】:

  • 哇,这比我想象的要简单得多。是的,我应该更妥善地管理我的内存——我尽我所能在使用后立即删除所有对象并不时调用 gc(),但这似乎仍然不够。哦,好吧,练习练习……
【解决方案2】:

你可以看看这个解决方案http://www.rforge.net/JRI

【讨论】:

    【解决方案3】:

    如果我们将较长的 R 脚本放入循环并将所有重复的代码部分放入循环中,则不需要启动和终止 R 会话的过程。无需开始会话,您只需执行以下前三个步骤:

    1. 使用write.csv方法[文件写入]保存你的结果 脚本。

    2. 使用Sys.time(seconds) 延迟或中断短路 使用“基础”包的秒数

    3. 通过使用“mise”清除控制台和 fig 工作区 哪个是释放对象空间的更重要的包 已经执行的脚本。

    4. 我们也可以为声音“beepr”打包method:beep(3)

    在此之后我的较长脚本执行不会终止 希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-10
      • 1970-01-01
      • 2016-06-29
      • 2021-10-11
      • 2019-10-16
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多