1. ホーム
  2. r

[解決済み] Rでロードされているパッケージのバージョンを調べるには?

2022-03-19 19:08:13

質問

大学のクラスターをどのように使うか考えている最中です。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でやろうとすると、以下のメッセージが表示されます。

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 のように、インストールされているすべてのパッケージについて、同様の情報をリストアップする関数があるのではないでしょうか?

解決方法は?

を使用することができます。 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()