如何找出在R中加载哪个软件包版本?

我正在研究如何使用我的大学集群。 它有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启动脚本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编译的包装雪版本。 我已经在R 2.14中将雪安装到我的主文件夹中,并将以下行添加到我的代码中:

 .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 packages文件夹是在searchpath中的第一个。 但是我仍然得到错误。

所以我的问题是如何确定在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 > 

但是,根据评论和下面的答案,有更好的select

 > packageVersion("snow") 

[1]'0.3.9'

要么:

 "Rmpi" %in% loadedNamespaces() 

您可以使用packageVersion来查看加载的软件包版本

 > packageVersion("snow") [1] '0.3.9' 

虽然听起来好像你想看看你正在运行什么版本的R,在这种情况下@贾斯汀的sessionInfobuild议是要走的路

你可以尝试这样的事情:

  1. package_version(R.version)

  2. getRversion()

要检查R执行的版本: R --version

或者在R shell中打印version$version.string的内容

编辑

要检查已安装软件包的版本,请执行以下操作。

加载库之后,可以执行sessionInfo ()

但要知道所有已安装软件包的列表:

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

或者提取特定的库版本,一旦使用上面的installed.package函数提取了信息,只需在matrix的第一维中使用该包的名称即可。

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

以上将打印RANN库和graphics库的版本。

GUI解决scheme:

如果您正在使用RStudio,则可以在“ Packages窗格中查看软件包版本。

在这里输入图像说明

从技术上讲,目前所有的答案都是错误的。 packageVersion不会返回已加载包的版本。 它进入磁盘,并从那里获取软件包的版本。

这在大多数情况下都没有什么不同,但有时候确实如此。 据我所知,获得一个加载的软件包的唯一方法是相当黑客:

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

其中pkg是包名称。

编辑:我不知道当这个function被添加,但你也可以使用getNamespaceVersion ,这是更清洁:

 getNamespaceVersion(pkg) 

使用R方法packageDescription获取已安装的软件包描述,而版本只需使用$Version

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

使用以下代码来获取系统中安装的R软件包的版本:

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

根据以前的答案,这里是打印R版本的一个简单的替代方法,后面是在命名空间中加载的每个软件包的名称和版本。 它在Jupyter笔记本上运行,在那里我遇到了运行sessionInfo()R --version麻烦。

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

date:

 [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"