R软件包的版本号如1.97.1。我可以检查版本号
packageVersion("data.table")
Run Code Online (Sandbox Code Playgroud)
在我的计算机上,这将返回1.10.0。
我想做的是检查data.table版本是否比1.9.7更新,因为1.9.7之后的版本具有我的代码需要的功能。我尝试过将版本分为各个组成部分,并以不同的方式对其进行评估,但是我还没有找到任何可靠的方法来执行此操作。任何建议,不胜感激。
Ben*_*ker 10
虽然utils::compareVersion()很好,但我会说使用packageVersion()with 比较运算符(如注释中的@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
Run Code Online (Sandbox Code Playgroud)
这在以下示例中进行了说明?packageVersion;以这种方式使用比较运算符的能力明确记录在?package_version:
函数
numeric_version,package_version并R_system_version从此类字符串(如果合适)创建表示,允许强制和测试、组合、比较、汇总(最小值/最大值)、包含在数据帧中、下标和打印。这些类可以保存这种表示的向量。
正如本杰明所建议的,正确的工具是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
Run Code Online (Sandbox Code Playgroud)
结果compareVersion(a, b)是
-1 如果 a < b0 如果 a == b1 如果 a > b来源:
?utils::compareVersion