java - 将代码写入 : start an R session, 运行 R 脚本,终止 session ,重复

标签 java r terminal

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

1) 开始一个 R session

2) 告诉 R 源 .R 文件,其中包含用于冗长并行模拟的代码

3) 完成后终止R session

4) 开始一个新的 R session

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

6) 完成后终止R session

7)起泡沫,冲洗,重复

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

谢谢!

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

最佳答案

启动和终止 R session 的过程是使用 Rscript 处理的。所以写你的脚本这样调用它们:

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

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

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

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

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


编辑

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

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()

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

关于java - 将代码写入 : start an R session, 运行 R 脚本,终止 session ,重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15837617/

相关文章:

java - ImageIO.write 是否缓冲?

java - 转储 java 对象的属性

bash - 防止显示键入的字符(例如在 termios 中禁用 "echo"属性)

java - 按不在分组依据中或封装在聚合中的列排序

java - 如何使用 Gson 序列化包含 HashMap 作为属性的类?还反序列化?

r - ggplot - 如何覆盖图例值

r - 安装 R 包时出现问题 "ld: warning: directory not found for option "

r - 使用 tidyr 将两行展开为一行

ffmpeg - 为什么 ffmpeg 会创建额外的文件?

python - 通过复制到目录在 Mac 上安装 Django?