我正在寻找一种简单的“设置并忘记它”的方式,无论是作为终端中的单个参数字符串还是简单的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答案 0 :(得分:4)
使用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()
等等。下一个函数在完成第一个函数之前不会运行,并且您的对象应该在函数中死亡,因此您不应该耗尽内存。
答案 1 :(得分:1)
您可以查看此解决方案http://www.rforge.net/JRI
答案 2 :(得分:0)
如果我们将较长的R脚本放入循环并将所有重复的代码段放入循环,则不需要启动和终止R会话的过程。无需启动会话,只需执行以下前三个步骤:
使用write.csv
方法[文件写入]保存您的结果
Rscripts。
使用Sys.time(seconds)
来延迟或缩短时间
使用“基本”软件包的秒数
通过使用“ mise”清除控制台和无花果工作区 这是释放对象空间的更重要的包 已经执行的脚本。
我们还可以“ beepr”打包声音method:beep(3)
。
此后,我更长的脚本执行不会终止 希望对您有帮助