我正在弄清楚如何使用我的大学集群。它安装了 2 个版本的 R。系统范围的 R 2.11 (Debian 6.0) 和 R 2.14.2 在非标准位置。
我正在尝试将 MPI 与雪一起使用。我试图运行的代码如下
library(snow) library(Rmpi) cl <- makeMPIcluster(mpi.universe.size()-1) stopCluster(cl) mpi.quit()
它在 R 2.11 上没有问题。(我用 启动脚本mpirun -H localhost,n1,n2,n3,n4 -n 1 R --slave -f code.R)。现在,当我尝试使用 R 2.14.2 执行此操作时,我收到以下消息:
mpirun -H localhost,n1,n2,n3,n4 -n 1 R --slave -f code.R
Error: This is R 2.11.1, package 'snow' needs >= 2.12.1 In addition: Warning message:
所以看起来 R 加载了为 R 2.11 编译的包雪版本。我已将 R 2.14 下的 snow 安装到我的主文件夹中,并将以下几行添加到我的代码中:
.libPaths("/soft/R/lib/R/library") .libPaths("~/R/x86_64-pc-linux-gnu-library/2.11") print(.libPaths()) print(sessionInfo()) print(version)
错误之前的输出确认我确实在运行 R 2.14.2,并且我的 R 包文件夹位于搜索路径的首位。但我仍然得到错误。
所以我的问题是如何确定 R 中加载了哪个版本的包?我可以看到 installed.packages所有已安装的软件包,所以也许有一些功能列出了已加载软件包的类似信息?
installed.packages
你可以用它sessionInfo()来实现。
sessionInfo()
> sessionInfo() R version 2.15.0 (2012-03-30) Platform: x86_64-pc-linux-gnu (64-bit) locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_PAPER=C LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] graphics grDevices utils datasets stats grid methods base other attached packages: [1] ggplot2_0.9.0 reshape2_1.2.1 plyr_1.7.1 loaded via a namespace (and not attached): [1] colorspace_1.1-1 dichromat_1.2-4 digest_0.5.2 MASS_7.3-18 memoise_0.1 munsell_0.3 [7] proto_0.3-9.2 RColorBrewer_1.0-5 scales_0.2.0 stringr_0.6 >
但是,根据评论和下面的答案,有更好的选择
> packageVersion("snow")
[1] “0.3.9”
要么:
"Rmpi" %in% loadedNamespaces()