使用 Start 命令让 Windows 以批处理模式启动 R
-
19-09-2019 - |
题
我知道我一定犯了一个简单的语法错误,但我想要一个 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文件夹。
其他提示
我会做两件不同的事情:
使用 R 本身来调度 9 个不同的作业;这 雪 即使不使用 MPI / PVM / NWS 进行分布式工作,包也非常擅长这一点。例如,在我的“R 高性能计算简介”教程中,有一些关于雪的使用的示例,链接为 这一页. 。使用 Snow,您可以获得应用函数的“并行”版本,您可以在本地计算机(或者当然是计算机网络,如果有的话)上运行的多个 R 实例上运行这些函数。r-sig-hpc 列表对于解决更详细的问题很有帮助。
切换到使用 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