r检查包版本是否大于x.y.z

时间:2017-01-05 22:12:17

标签: r package version

R包的版本号如1.97.1。我可以查看版本号是什么

 packageVersion("data.table")

在我的电脑上,它返回1.10.0。

我想要做的是检查data.table版本是否比1.9.7更新,因为1.9.7之后的版本具有我的代码所需的功能。我已经尝试将版本拆分为其组成部分并以不同的方式对其进行评估,但我还没有找到任何可行的方法。 任何建议都非常感谢。

2 个答案:

答案 0 :(得分:3)

根据本杰明的建议,正确的工具是compareVersion

version_above <- function(pkg, than) {
  as.logical(compareVersion(as.character(packageVersion(pkg)), than))
}

packageVersion("ggplot2")
# [1] '2.2.1'
version_above("ggplot2", "2.0.0")
# [1] TRUE
version_above("ggplot2", "3.0.0")
# [1] FALSE

compareVersion(a, b)的结果是

  • -1 if a < b
  • 0 if a == b
  • 1 if a > b

来源:

?utils::compareVersion

答案 1 :(得分:3)

虽然utils::compareVersion()没问题,但我会说使用带有比较运算符的packageVersion()(在评论中用@ G5W表示)更简单:

packageVersion("data.table")
[1] ‘1.10.0’
> packageVersion("data.table")>"1.9.8"
[1] TRUE
> packageVersion("data.table")>"1.10.01"
[1] FALSE
> packageVersion("data.table")=="1.10.0"
[1] TRUE

?packageVersion的例子说明了这一点;在?package_version

中明确记录了以这种方式使用比较运算符的能力
  

函数'numeric_version','package_version'和        'R_system_version'从这些字符串创建一个表示(如果        适合)允许强制和测试,组合,        比较,摘要(最小/最大),包含在数据框中,        下标和打印。这些类可以包含这样的向量        表示。