4

我知道我一定犯了一个简单的语法错误,但我想要一个 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" 

阅读this previous stackoverflow question以及this 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 永远不会启动。我错过了什么?

4

3 回答 3

5

我会做两件不同的事情:

  1. 使用 R 本身调度九个不同的工作;即使不使用 MPI / PVM / NWS 进行分布式工作,snow包也非常擅长这一点。例如,我在本页链接的“使用 R 进行高性能计算的介绍”教程中有一些使用雪的示例。使用雪,您可以获得应用函数的“并行”版本,您可以在本地计算机上运行的多个 R 实例(当然,如果有计算机网络)上运行这些实例。r-sig-hpc 列表有助于解决更详细的问题。

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

也就是说,我几乎所有的工作都在 Linux 上运行,所以这里可能也有一个我不知道的特定于 Windows 的答案。但上述内容是通用的,并保持 R 的平台无关精神。

于 2009-07-27T14:51:12.100 回答
4

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

于 2010-08-06T01:04:26.110 回答
2

从其他答案中并不清楚如何实际完成这项工作(不诉诸并行处理替代方案,所以这是我发现的一个解决方案,它在 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)
}

在 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
于 2013-04-05T21:26:59.973 回答