首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何找出R中加载的是哪个包版本?

如何找出R中加载的是哪个包版本?
EN

Stack Overflow用户
提问于 2012-06-19 22:30:29
回答 12查看 487.3K关注 0票数 489

我正在研究如何使用我的大学集群。它安装了两个版本的R。系统范围的R 2.11 (Debian 6.0)和非标准位置的R 2.14.2。

我正在试着和雪一起使用MPI。我尝试运行的代码如下所示

代码语言:javascript
运行
复制
library(snow)
library(Rmpi)
cl <- makeMPIcluster(mpi.universe.size()-1)
stopCluster(cl)
mpi.quit()

它在R2.11上运行时没有问题。(我使用mpirun -H localhost,n1,n2,n3,n4 -n 1 R --slave -f code.R启动该脚本)。现在,当我尝试使用R 2.14.2来做这件事时,我得到以下消息:

代码语言:javascript
运行
复制
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,并在我的代码中添加了以下代码行:

代码语言:javascript
运行
复制
.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查看所有已安装的包,所以也许有一些函数可以列出已加载包的类似信息?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2012-06-19 22:31:47

您可以使用sessionInfo()来完成此任务。

代码语言:javascript
运行
复制
> 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       
> 

然而,根据下面的评论和答案,还有更好的选择

代码语言:javascript
运行
复制
> packageVersion("snow")

1‘0.3.9’

或者:

代码语言:javascript
运行
复制
"Rmpi" %in% loadedNamespaces()
票数 640
EN

Stack Overflow用户

发布于 2012-06-19 22:36:34

您可以使用utils::packageVersion查看安装的软件包的版本:

代码语言:javascript
运行
复制
> packageVersion("snow")
[1] ‘0.3.9’

Note that

除非包含包含有效Version字段的DESCRIPTION文件,否则将找不到包。当没有找到软件包目录时,以及当有合适的目录但没有有效的DESCRIPTION文件时,会给出不同的警告。

虽然听起来你想看看你运行的是什么版本的R,但在这种情况下,@Justin's sessionInfo suggestion是最好的选择。

票数 305
EN

Stack Overflow用户

发布于 2016-05-22 08:07:36

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

这在大多数情况下不会有什么不同,但有时会有所不同。据我所知,获取已加载包版本的唯一方法是:

代码语言:javascript
运行
复制
asNamespace(pkg)$`.__NAMESPACE__.`$spec[["version"]]

其中,pkg是包的名称。

编辑:我不确定这个函数是什么时候添加的,但你也可以使用getNamespaceVersion,这更简洁:

代码语言:javascript
运行
复制
getNamespaceVersion(pkg)
票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11103189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档