Java 将代码写入:启动R会话、运行R脚本、终止会话、重复
我正在寻找一种简单的“设置它,然后忘记它”的方法,可以是终端中的单个参数字符串,也可以是一个简单的Java程序,以自动执行以下操作: 1) 启动R会话 2) 告诉R-to-source.R文件,这些文件包含用于长时间并行模拟的代码 3) 完成后终止R会话 4) 启动新的R会话 5) 告诉R源其他.R文件 6) 完成后终止R会话 7) 起泡、冲洗、重复 我的.R脚本运行总共需要几天时间,在此期间我将外出,无法检查它们,如果我在同一个会话中运行它们,我将无法避免最大限度地使用可用RAM 谢谢Java 将代码写入:启动R会话、运行R脚本、终止会话、重复,java,r,terminal,Java,R,Terminal,我正在寻找一种简单的“设置它,然后忘记它”的方法,可以是终端中的单个参数字符串,也可以是一个简单的Java程序,以自动执行以下操作: 1) 启动R会话 2) 告诉R-to-source.R文件,这些文件包含用于长时间并行模拟的代码 3) 完成后终止R会话 4) 启动新的R会话 5) 告诉R源其他.R文件 6) 完成后终止R会话 7) 起泡、冲洗、重复 我的.R脚本运行总共需要几天时间,在此期间我将外出,无法检查它们,如果我在同一个会话中运行它们,我将无法避免最大限度地使用可用RAM 谢谢 编辑:
编辑:我在Ubuntu12.04 LTS上运行R2.15.3,内存为16GB启动和终止R会话的过程通过使用
Rscript
来处理。因此,请编写脚本,并按如下方式调用它们:
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()
massible\u process\u 1您可以看看这个解决方案如果我们将较长的R脚本放入循环中,并将所有重复的代码部分放入循环中,则不需要启动和终止R会话的过程。无需启动会话,您只需执行以下前三个步骤:
使用write.csv
方法[文件写入]保存您的
rscript
使用系统时间(秒)
延迟或中断短路
使用“基本”包的秒数
方法:beep(3)
我希望这将对您有所帮助您尝试过Rscript.exe吗?在批处理脚本中使用它。为什么不使用bash脚本并通过类似
R--vanilla
?rm(list=ls())的方式执行每个R脚本;gc()
在源文件之间释放内存。@sidoh mayby他希望操作以R输出为条件,并从Java级别对其进行结构化,这似乎更简单?“但让我们问问他。”西多:这正是我要找的地方!我想我需要复习一下我的终端命令……哇,这比我想象的要简单得多。是的,我应该更妥善地管理我的内存--我尽我所能在使用后立即删除所有对象,并经常调用gc(),但这似乎仍然不够。哦,好吧,练习。。。