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

Gor*_*orp 6 r

R 包中的函数是否有一种巧妙的方法来访问(该 R 包的)描述文件中指定的版本号?

jay*_*.sf 6

也许使用installed.packages()

installed.packages()['MASS', 'Version']
# [1] "7.3-57"
Run Code Online (Sandbox Code Playgroud)


use*_*330 6

您可以使用该packageVersion()功能:

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

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

根据您安装的软件包数量,这也比使用以下命令要快得多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
Run Code Online (Sandbox Code Playgroud)

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

  • @rempsyc,“编写 R 扩展”说“CITATION 文件不包含对诸如 packageDescription 之类的函数的调用是可取的(对于 CRAN 来说是必要的),这些函数假设包安装在包搜索路径上的库树中。”,但它提供了其他方式来获取您需要的信息。有关使用“meta”变量的示例,请参阅 https://github.com/bradlindblad/tidyUSDA/blob/master/inst/CITATION。如果不清楚,我认为您需要提出一个新问题。 (2认同)