1

我在 Windows 上使用parallelor包,该函数可以带一个参数来指定它在工作人员上执行的位置。如果我希望它被执行为什么选项?snowmakeClusterrscriptRscript--vanilla

编辑:运行makeCluster(2, rscript='pathToMyRScript --vanilla')不适用于我的盒子

4

3 回答 3

2

我不相信这些软件包提供了一种简单、直接的方法。我将创建一个包装器并使用“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")
于 2013-03-01T02:43:33.060 回答
2

我认为您最好的选择是将其作为功能请求提交给包作者,或者深入研究函数定义并定义您自己的调用以尝试使用名为 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不起作用。

于 2013-03-06T23:40:50.840 回答
1

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

于 2013-02-20T13:27:46.357 回答