首页 文章

如何找出R中加载的软件包版本?

提问于
浏览
308

我正在弄清楚如何使用我的大学集群 . 它安装了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编译的包雪版本 . 我已将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文件夹首先在搜索路径中 . 但我仍然得到错误 .

所以我的问题是如何确定在R中加载哪个版本的软件包?我可以看到 installed.packages 所有已安装的软件包,所以可能有一些函数列出了加载软件包的类似信息?

10 回答

  • 19

    你可以尝试这样的事情:

    • package_version(R.version)

    • getRversion()

  • 400

    GUI solution:

    如果您使用的是RStudio,则可以在 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()
    
  • 1

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

    或者在你进入R shell后打印 version$version.string 的内容

    EDIT

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

    加载库后,可以执行 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库和图形库的版本 .

  • 5

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

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

    根据之前的答案,这里有一个打印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"
    
  • 0

    Search()可以在会话中提供更简化的附加包列表(即没有sessionInfo()给出的详细信息)

    search - R文档
    描述:提供附加包的列表 . Search()

    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"
    
  • 18

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

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

    虽然听起来你想看看你正在运行什么版本的R,但在这种情况下@ Justin的 sessionInfo 建议是要走的路

  • 11

    从技术上讲,此时的所有答案都是错误的 . packageVersion 不返回已加载包的版本 . 它转到磁盘,并从那里获取包版本 .

    在大多数情况下,这不会产生任何影响,但有时却会产生影响 . 据我所知,获得加载包的版本的唯一方法是相当hackish:

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

    其中 pkg 是包名 .

    编辑:我不确定何时添加此功能,但您也可以使用 getNamespaceVersion ,这是更清洁:

    getNamespaceVersion(pkg)
    
  • 240

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

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

相关问题