2009-07-27 34 views
4

我知道我必须犯一个简单的语法错误,但我想要一个Windows批处理文件,它启动R的9个实例并在每个实例中运行不同的例程。我希望这些可以同时运行(即异步)。我可以启动9个命令提示符窗口并在每一个命令窗口中输入一个命令,但是看起来像使用START命令,我应该能够使它们从一个批处理文件开始。使用开始命令让窗口在批处理模式下启动R

这里是我如何开始R的情况下的一个例子:

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

阅读本previous stackoverflow questionthis previous question一起让我觉得我应该能够做到这一点:

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

那不返回错误,它只是返回一个提示符,R从不开始。我错过了什么?

+0

是“/ B”为START命令的参数?我认为它传递给了R程序。尝试将其更改为START/b ....但我不确定这是否真的解释了问题(R从不开始)。 – ars 2009-07-27 17:01:32

+0

您解决了这个问题吗?@JD? – 2011-07-16 14:49:40

+0

@罗曼,我结束了构建赛格:)如果我今天尝试解决同样的问题,我会使用多核或doRedis。 – 2011-07-18 14:27:48

回答

4

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

5

我会做两分不同的事情:

  1. 使用[R本身派遣九个不同的工作;即使不使用MPI/PVM/NWS进行分布式工作,snow软件包也非常擅长。例如,在我的'高性能计算R'教程链接从this page的介绍。有了雪,你就可以获得应用函数的'并行'版本,你可以在本地计算机上运行的R的多个实例上运行(或者当然也可以是一台计算机,如果有的话)。 r-sig-hpc列表对更详细的问题有帮助。

  2. 切换到使用Rscript.exe而不是使用'R CMD BATCH'。在Linux/OS X您还可以获得使用利特勒

不过的选择,我跑我几乎所有的Linux上工作,这样有可能在此特定的Windows的答案太,我只是不知道。但以上是通用的,并保持R的平台不可知论的精神。

1

这是不是从其他的答案如何真正使这项工作(而不是诉诸并行处理方案立即清除,所以这里我找到了一个解决方案,如果你有一个简易R是非常简单的工作在Windows

文件:

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

在CMD,指定其中你的脚本所在的目录,然后启动一个新的窗口,RSCRIPT运行你的多行代码将打开运行代码,多个存在的R实例也重现的消息说代码输出。

cd "C:\rcode" 
START "" Rscript example_code.r /b 
START "" Rscript example_code.r /b 

如果RSCRIPT不在系统路径上,只指定完整路径,而不是:

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