如何在并行或雪中指定makeCluster中的选项

时间:2013-02-20 12:13:52

标签: r parallel-processing snow

我在Windows上使用parallelsnow个软件包,makeCluster函数可以使用rscript参数来指定Rscript所在的位置对工人执行。如果我希望执行--vanilla选项的原因怎么办?

编辑:正在运行makeCluster(2, rscript='pathToMyRScript --vanilla')无法使用我的方框

3 个答案:

答案 0 :(得分:2)

我认为您最好的选择是将此作为功能请求提交给包作者,或者深入了解函数定义并定义您自己的调用以尝试使用名为--vanilla的Rscript生成PSOCK节点。请参阅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不起作用。

答案 1 :(得分:1)

从R手册页上的An Introduction to 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。

答案 2 :(得分:1)

我不相信这些软件包提供简单直接的方法。我将创建一个包装器并使用“rscript”选项指定该包装器的完整路径。理论上这很容易,但实际上在编写包装器时必须要小心,以避免由于在包含空格的情况下重新解析参数而导致的错误。例如,我怀疑以下BAT脚本会出现问题:

"C:\Program Files\R\R-2.15.2\bin\Rscript" --vanilla %*

我可能会使用子脚本模块的Python脚本,但有很多可供选择的方式,你可能有自己喜欢的。

<强>更新

自R版本3.1.2起,rscript_args选项已添加到makeCluster功能中。您可以使用此选项指定--vanilla选项:

makeCluster(2, rscript_args="--vanilla")