Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将代码写入:启动R会话、运行R脚本、终止会话、重复_Java_R_Terminal - Fatal编程技术网

Java 将代码写入:启动R会话、运行R脚本、终止会话、重复

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 谢谢 编辑:

我正在寻找一种简单的“设置它,然后忘记它”的方法,可以是终端中的单个参数字符串,也可以是一个简单的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

  • 使用系统时间(秒)
  • 延迟或中断短路 使用“基本”包的秒数

  • 通过使用“mise”清除控制台和fig工作区 哪个软件包更重要,可以释放空间中的对象 已执行的脚本

  • 我们还可以为声音提供“蜂鸣器”包
    方法:beep(3)

  • 在此之后,较长的脚本执行不会终止
    我希望这将对您有所帮助

    您尝试过Rscript.exe吗?在批处理脚本中使用它。为什么不使用bash脚本并通过类似
    R--vanilla
    rm(list=ls())的方式执行每个R脚本;gc()
    在源文件之间释放内存。@sidoh mayby他希望操作以R输出为条件,并从Java级别对其进行结构化,这似乎更简单?“但让我们问问他。”西多:这正是我要找的地方!我想我需要复习一下我的终端命令……哇,这比我想象的要简单得多。是的,我应该更妥善地管理我的内存--我尽我所能在使用后立即删除所有对象,并经常调用gc(),但这似乎仍然不够。哦,好吧,练习。。。