如何找出哪个包版本装入R'如何找出哪个包版本装入R'(How to find out

2019-06-02 12:10发布

我在搞清楚如何使用我的大学集群的过程。 它安装了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包雪版本。 我[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)

而错误之前的输出证实我确实运行v 2.14.2和我的R程序包文件夹是第一个在搜索路径。 但我仍然得到错误。

所以我的问题是我怎么确定哪些包的版本R中加载? 我可以看到installed.packages所安装的所有软件包,因此也许有一些功能,其中列出了加载的包类似的信息?

Answer 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()


Answer 2:

您可以使用packageVersion看什么版本的包被加载

> packageVersion("snow")
[1] ‘0.3.9’

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



Answer 3:

你可以尝试这样的事情:

  1. package_version(R.version)

  2. getRversion()



Answer 4:

要检查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")]

以上将打印兰恩库的版本和图形库。



Answer 5:

从技术上讲,所有在这个时候的答案是错误的。 packageVersion不返回装包的版本。 它去到磁盘,并从那里取包的版本。

这不会使在大多数情况下有差别,但有时它。 据我所知,得到加载包的版本的唯一方法是相当的hackish:

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

其中, pkg是软件包的名称。

编辑:我不知道什么时候加入这个功能,但你也可以使用getNamespaceVersion ,这是清洁:

getNamespaceVersion(pkg)


Answer 6:

GUI solution:

如果你正在使用RStudio那么你可以检查包版Packages窗格。



Answer 7:

使用R方法packageDescription获取安装的软件包描述和版本只使用$Version为:

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


Answer 8:

使用下面的代码来获得系统中安装的R程序包的版本:

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


Answer 9:

根据前面的答案,这里是打印的R版本,然后在命名空间中加载的每个包的名称和版本的一个简单的替代方式。 它的工作原理在Jupyter笔记本,在那里我有很多麻烦运行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"


Answer 10:

搜索()可以给所连接的包的更简化的列表在一个会话(即不通过sessionInfo给出的详细信息())

搜索{碱} - 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"


Answer 11:

只需使用help(package="my_package")看看显示的版本。

这是假设有在同一任何其他包版本.libPaths



文章来源: How to find out which package version is loaded in R?