我在 Windows 上使用parallel
or包,该函数可以带一个参数来指定它在工作人员上执行的位置。如果我希望它被执行为什么选项?snow
makeCluster
rscript
Rscript
--vanilla
编辑:运行makeCluster(2, rscript='pathToMyRScript --vanilla')
不适用于我的盒子
我在 Windows 上使用parallel
or包,该函数可以带一个参数来指定它在工作人员上执行的位置。如果我希望它被执行为什么选项?snow
makeCluster
rscript
Rscript
--vanilla
编辑:运行makeCluster(2, rscript='pathToMyRScript --vanilla')
不适用于我的盒子
我不相信这些软件包提供了一种简单、直接的方法。我将创建一个包装器并使用“rscript”选项指定该包装器的完整路径。理论上这很容易,但实际上在编写包装器时必须小心,以避免由于重新解析参数而导致错误,以防它们包含空格。例如,我怀疑以下 BAT 脚本会出现问题:
"C:\Program Files\R\R-2.15.2\bin\Rscript" --vanilla %*
我可能会使用使用 subprocess 模块的 Python 脚本,但有很多可能性可供选择,您可能有自己喜欢的。
更新
从 R 版本 3.1.2 开始,该rscript_args
选项被添加到makeCluster
函数中。您可以使用此选项来指定--vanilla
选项:
makeCluster(2, rscript_args="--vanilla")
我认为您最好的选择是将其作为功能请求提交给包作者,或者深入研究函数定义并定义您自己的调用以尝试使用名为 as 的 Rscript 生成 PSOCK 节点--vanilla
。查看parallel:::newPSOCKnode
并检查它如何定义对Rscript
. 感兴趣的线路是:
rscript <- if (getClusterOption("homogeneous", options)) {
shQuote(getClusterOption("rscript", options))
}
else "Rscript"
cmd <- paste(rscript, "-e", shQuote(arg), env)
如果您可以修改要调用的函数Rscript --vanilla
,它可能会正常工作。我很惊讶写作rscript=<rscript_path> --vanilla
不起作用。
从An Introduction to R
R 手册页的 B.4 节:
If you just want to run a file foo.R of R commands, the recommended way is to use R CMD BATCH foo.R. If you want to run this in the background or as a batch job use OS-specific facilities to do so: for example in most shells on Unix-alike OSes R CMD BATCH foo.R & runs a background job.
所以在你的情况下,所有命令都必须进入脚本,然后你想要
R --vanilla CMD BATCH your_script.R
从命令行,而不是 GUI。