Rにロードされているパッケージのバージョンを確認するにはどうすればよいですか?


405

私は大学のクラスターの使い方を理解している最中です。Rの2つのバージョンがインストールされています。システム全体の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インストールされているすべてのパッケージで確認できる ので、読み込まれたパッケージの同様の情報を一覧表示する関数があるのでしょうか?


1
この問題の良い解決策を見つけましたか?私の経験では、Rヘルプが示すように、sessionInfoとpackageVersionの両方が、パッケージのロード元の場所にインストールされている現在のバージョンを
RockScience 2015年

回答:


519

あなたは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()

1
ありがとう。私の間違いは、パッケージをロードする前にsessionInfoを出力することでした。結局、正しいバージョンのパッケージがロードされたことがわかりましたが、Rはまだ古いバージョンについて不満を言っています。私自身のローカルバージョンのRをインストールし、すべてが魅力的に機能しました。
mpiktas 2012年

45
TMI!packageVersion()ほとんどの場合、はるかに優れています
Louis Maddox、2015年

1
の使用はお勧めしませんsessionInfo。?sessionInfoのメモを参照してください:「「ロードされた」パッケージと名前空間に関する情報は、パッケージがロードされた場所にインストールされている現在のバージョンです。別のプロセスがセッション中にパッケージを変更している場合、間違っている可能性があります。」したがって、パッケージがロードされているかどうかを知りたい場合は、より適切に使用してください"Rmpi" %in% loadedNamespaces()。特定の場所にインストールされているバージョンを知りたい場合は、より適切に使用してくださいpackageVersion(lib.loc = ...)
RockScience

バージョンを返す答えは、以下を参照してくださいガーボルの答え、現在ロードされているパッケージ:(ディスク上のバージョンとは異なる場合があります)stackoverflow.com/a/37369263/946850
krlmlr

273

使用できます packageVersionして、ロードされているパッケージのバージョンを確認

> packageVersion("snow")
[1]0.3.9

実行しているRのバージョンを確認したいようですが、その場合sessionInfoは、@ Justinの提案に従ってください。


24

Rのバージョンを確認するには、次のコマンドを実行します。 R --version

または、Rシェルに入ったら、次の内容を出力します。 version$version.string

編集

インストールされているパッケージのバージョンを確認するには、次の手順を実行します。

ライブラリをロードした後、実行できます sessionInfo ()

しかし、インストールされているすべてのパッケージのリストを知るには:

packinfo <- installed.packages(fields = c("Package", "Version"))
packinfo[,c("Package", "Version")]

または、特定のライブラリバージョンを抽出するにはinstalled.package、上記の関数を使用して情報を抽出したら、マトリックスの最初の次元でパッケージの名前を使用します。

packinfo["RANN",c("Package", "Version")]
packinfo["graphics",c("Package", "Version")]

上記は、RANNライブラリとグラフィックスライブラリのバージョンを出力します。


2
問題は、Rバージョンではなく、パッケージバージョンに関するものでした。そして、私のコードを見ると、私はを使用していますversion
mpiktas

packinfo[, "Version", drop=F]さらにきれいな結果が得られます(パッケージ名は複製されません)。
Marmite Bomber

21

技術的に言えば、現時点での答えはすべて間違っています。 packageVersionロードされたパッケージのバージョンは返しません。ディスクに移動し、そこからパッケージバージョンを取得します。

これはほとんどの場合違いを生じさせませんが、時にはそれは違います。私が知る限り、ロードされたパッケージのバージョンを取得する唯一の方法はかなりハックです:

asNamespace(pkg)$`.__NAMESPACE__.`$spec[["version"]]

どこ pkgパッケージ名です。

編集:この機能がいつ追加されたかgetNamespaceVersionはわかりませんが、を使用することもできます、これはよりきれいです:

getNamespaceVersion(pkg)

`:::`(pkg, .__NAMESPACE__.)$spec[["version"]]asNamespace()パッケージのバージョンを取得する方法の同義語です。
seasmith 2016

3
この答えはとても重要です。packageVersion()は上位の結果のみを表示しますinstalled.packages()が、同じパッケージの複数のバージョンがあり、特に1つをロードする場合、正しい答えは得られません。
calico_ 2017年

1
パーhughjonesd.shinyapps.io/rcheologyそれはR 1.7.0には早くも利用できるので、利用されています。
krlmlr

20

あなたはこのようなことを試すことができます:

  1. package_version(R.version)

  2. getRversion()


11

GUIソリューション:

RStudioを使用している場合は、Packagesペインでパッケージのバージョンを確認できます。

ここに画像の説明を入力してください


5

RメソッドpackageDescriptionを使用して、インストールされたパッケージの説明を取得し、バージョンの場合$Versionは次のように使用します。

packageDescription("AppliedPredictiveModeling")$Version
[1] "1.1-6"

4

前の回答に基づいて、Rバージョンを出力する簡単な代替方法を次に示します。その後に、名前空間にロードされた各パッケージの名前とバージョンが続きます。Jupyter Notebookで動作し、実行中に問題が発生sessionInfo()しましたR --version

print(paste("R", getRversion()))
print("-------------")
for (package_name in sort(loadedNamespaces())) {
    print(paste(package_name, packageVersion(package_name)))
}

アウト:

[1] "R 3.2.2"
[1] "-------------"
[1] "AnnotationDbi 1.32.2"
[1] "Biobase 2.30.0"
[1] "BiocGenerics 0.16.1"
[1] "BiocParallel 1.4.3"
[1] "DBI 0.3.1"
[1] "DESeq2 1.10.0"
[1] "Formula 1.2.1"
[1] "GenomeInfoDb 1.6.1"
[1] "GenomicRanges 1.22.3"
[1] "Hmisc 3.17.0"
[1] "IRanges 2.4.6"
[1] "IRdisplay 0.3"
[1] "IRkernel 0.5"

2

古い質問ですが、答えの中ではありませんが、読み込まれたすべてのパッケージの概要をすばやく簡単に取得するための私のお気に入りのコマンドは次のとおりです。

(.packages())

ロードされているすべてのパッケージのどのバージョンがインストールされているかを確認するには、上記のコマンドを使用してサブセットを作成しinstalled.packages()ます。

installed.packages()[(.packages()),3]

列番号(パッケージバージョンの場合は3)を変更することにより、installed.packages()読みやすいマトリックスに格納されているその他の情報を取得できます。以下は、バージョン番号と依存関係の例です。

installed.packages()[(.packages()),c(3,5)]

1

次のコードを使用して、システムにインストールされているRパッケージのバージョンを取得します。

installed.packages(fields = c ("Package", "Version"))

1

help(package="my_package")表示されているバージョンを使用して確認してください。

これは、同じパッケージに他のパッケージバージョンがないことを前提としてい.libPathsます。


0

Search()は、セッション内の添付パッケージのより簡略化されたリストを提供できます(つまり、sessionInfo()によって提供される詳細情報なし)

{base}-Rドキュメントの
説明を検索:添付パッケージのリストを提供します。探す()

search()
#[1] ".GlobalEnv"        "package:Rfacebook" "package:httpuv"   
#"package:rjson"    
#[5] "package:httr"      "package:bindrcpp"  "package:forcats"   # 
#"package:stringr"  
#[9] "package:dplyr"     "package:purrr"     "package:readr"     
#"package:tidyr"    
#[13] "package:tibble"    "package:ggplot2"   "package:tidyverse" 
#"tools:rstudio"    
#[17] "package:stats"     "package:graphics"  "package:grDevices" 
#"package:utils"    
#[21] "package:datasets"  "package:methods"   "Autoloads"         
#"package:base"

1
はい。ただし、sessionInfoはバージョン番号も提供します。私の場合、通常後者がより重要です。
mpiktas 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.