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

读这篇文章 之前的 stackoverflow 问题 随着 上一个问题 让我觉得我应该能够做到这一点:

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

这不会返回错误,它只是返回提示,并且 R 永远不会启动。我缺少什么?

有帮助吗?

解决方案

简单的回答。在Windows上运行命令使用“RCMD”不“R CMD”时。目前运行的命令单独的EXE。看看你的R安装过程中的bin文件夹。

其他提示

我会做两件不同的事情:

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

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

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

这是不是从其他的答案立即清楚如何真正使这项工作(而不是诉诸并行处理的替代品,因此在这里我找到了一个解决方案,很简单地适用于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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top