私は大学のクラスターをどのように使用するか検討中です。2 つのバージョンの R がインストールされています。システム全体の R 2.11 (Debian 6.0) と、非標準の場所にある R 2.14.2 です。
MPIをsnowと一緒に使用しようとしています。実行しようとしているコードは次のとおりです。
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 で実行しようとすると、次のメッセージが表示されます。
Error: This is R 2.11.1, package 'snow' needs >= 2.12.1
In addition: Warning message:
したがって、R は R 2.11 用にコンパイルされたパッケージ snow バージョンをロードするようです。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
インストールされているすべてのパッケージを確認できるので、ロードされたパッケージの同様の情報をリストする関数があるのでしょうか?
ベストアンサー1
それを実現するために使用することができます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()