从 R 包的 DESCRIPTION 文件中获取版本号

6

在R包中,函数是否有一种简单的方法可以访问指定在DESCRIPTION文件中的版本号?

2个回答

6

或许可以使用installed.packages()

installed.packages()['MASS', 'Version']
# [1] "7.3-57"

6

你可以使用 packageVersion() 函数:

packageVersion("MASS")
#> [1] '7.3.56'
packageVersion("MASS") >= "7.3.9"  # Compares as version, not character
#> [1] TRUE

2022年6月5日由reprex package (v2.0.1)创建

根据您安装的包的数量,使用此方法将比使用installed.packages()更快:

microbenchmark::microbenchmark(packageVersion("MASS"), installed.packages()['MASS', 'Version'])
#> Unit: microseconds
#>                                     expr      min       lq      mean    median
#>                   packageVersion("MASS")  315.500  336.111  392.9827  370.0415
#>  installed.packages()["MASS", "Version"] 4648.788 4811.913 7278.9214 4893.4105
#>         uq        max neval cld
#>   425.8515    796.667   100  a 
#>  5055.4825 235622.901   100   b

reprex package (v2.0.1)于2022-06-05创建


对于我的软件包的 CITATION 文件,我进行了自定义,并使用 utils::packageVersion("rempsyc") 确保版本始终是最新的。然而,CRAN 检查会出现以下警告:Reading CITATION file fails with: there is no package called 'rempsyc'。看起来它在安装软件包之前检查 CITATION 文件,有点奇怪。是否有任何可能的解决方法? - rempsyc
2
@rempsyc,“编写 R 扩展”指出:“CITATION 文件不应包含对函数(例如 packageDescription)的调用,这些函数假定软件包已在软件包搜索路径上的库树中安装(对于 CRAN 很重要)。” 但是它提供了其他获取所需信息的方法。请参见 https://github.com/bradlindblad/tidyUSDA/blob/master/inst/CITATION,其中使用 meta 变量的示例。如果还不清楚,我认为您需要发表一个新问题。 - user2554330
谢谢,我不知道这个!我尝试了一下,它确实有效! :D - rempsyc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接