Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.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/4/r/69.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
让windows使用start命令在批处理模式下启动R_Windows_R_Batch File_Command Prompt - Fatal编程技术网

让windows使用start命令在批处理模式下启动R

让windows使用start命令在批处理模式下启动R,windows,r,batch-file,command-prompt,Windows,R,Batch File,Command Prompt,我知道我一定是犯了一个简单的语法错误,但我希望有一个windows批处理文件,可以激发9个R实例,并在每个实例中运行不同的例程。我希望它们同时运行(即异步运行)。我可以启动9个命令提示符窗口,并在每个窗口中键入一个命令,但似乎使用START命令,我应该能够使它们从单个批处理文件开始 下面是我如何启动R的一个实例的示例: "C:\Program Files (x86)\R\R-2.8.1\bin\R" CMD BATCH "C:\Users\jd\Documents\mexico\Estado\g

我知道我一定是犯了一个简单的语法错误,但我希望有一个windows批处理文件,可以激发9个R实例,并在每个实例中运行不同的例程。我希望它们同时运行(即异步运行)。我可以启动9个命令提示符窗口,并在每个窗口中键入一个命令,但似乎使用START命令,我应该能够使它们从单个批处理文件开始

下面是我如何启动R的一个实例的示例:

"C:\Program Files (x86)\R\R-2.8.1\bin\R" CMD BATCH "C:\Users\jd\Documents\mexico\Estado\getdata1.r" 
与此同时阅读,让我觉得我应该能够做到这一点:

START "" "C:\Program Files (x86)\R\R-2.8.1\bin\R" CMD BATCH "C:\Users\jd\Documents\mexico\Estado\getdata1.r" /b

它不会返回错误,只会返回一个提示,而R永远不会启动。我缺少什么?

我会做两件不同的事情:

  • 使用R本身分派九个不同的作业;即使在分布式工作中不使用MPI/PVM/NWS,该包在这方面也非常出色。例如,我的“使用R的高性能计算入门”教程中有一些使用snow的示例,这些教程链接自。使用snow,您可以获得apply函数的“并行”版本,您可以在本地计算机上运行的多个R实例上运行这些函数(当然也可以是一个计算机网络,如果有)。r-sig-hpc列表有助于回答更详细的问题

  • 切换到使用Rscript.exe,而不是使用“R CMD BATCH”。在Linux/OSX上,您还可以选择使用littler


  • 也就是说,我几乎所有的作业都是在Linux上运行的,所以这里可能也有一个Windows特有的答案,我只是不知道。但是上面的内容是通用的,并且停留在R的平台不可知精神中。

    简单的答案。在windows上运行命令时,请使用“Rcmd”而不是“R CMD”。有一个单独的exe用于运行命令。查看R安装的bin文件夹。

    从其他答案中还不清楚如何真正做到这一点(无需求助于并行处理替代方案,因此我发现有一个解决方案非常适合windows

    如果您有一个简单的r文件:

    for(i in 1:10){
      ptm0 <- proc.time()
      Sys.sleep(0.5)  
      ptm1=proc.time() - ptm0
      jnk=as.numeric(ptm1[3])
      cat('\n','It took ', jnk, "seconds to do iteration", i)
    }
    
    如果Rscript不在系统路径上,只需指定完整路径即可:

    START "" "C:\Program Files\R\bin\x64\Rscript.exe" text_within_loop.r /b
    

    好的,这很有道理。我需要休息一下,花一天的时间把我虚弱的大脑围绕在snow和MPI上。并行处理肯定是未来的趋势,但我在升级方面进展缓慢。好的是,在跳到MPI之前,你可以在本地机上使用网络套接字来试验snow。也就是说,现在有九个作业一台机器可能会耗尽您的内存。是否“/b”是START命令的参数?我想它会传递给R程序。尝试将其更改为START/b……但我不确定这是否真的能解释问题(R从未启动)。您解决了这个问题吗,@JD?@Roman,我最终生成了Segue:)如果我今天尝试解决同样的问题,我会使用多核或doRedis。但snow肯定是并行化作业的更复杂的方法。是的,snow更复杂。。。而随着这种复杂性的增加,会产生大量的开销
    START "" "C:\Program Files\R\bin\x64\Rscript.exe" text_within_loop.r /b