以编程方式查找当前版本的R

6

在R中,我们可以使用packageVersion()命令查看某个特定软件包的版本号,并对其使用关系运算符。例如:

packageVersion("MASS")
(pp <- packageVersion("MASS"))
## [1] ‘7.3.43’ 
pp > '7.2.0'
## TRUE

如何获取当前正在运行的R本身版本信息的等效表单?

要回答这个问题,您必须找到确切的查找位置,这并不像看起来那么容易:例如

grep("R[._vV]",apropos("version"),value=TRUE)
## [1] ".ess.ESSRversion" ".ess.Rversion"    "getRversion"       
## "R_system_version"
## [5] "R.Version"        "R.version"        "R.version.string"

我询问这个问题是因为我对每隔几个月就需要弄清楚它感到沮丧......如果没有其他人回答,我会回答。额外的奖励是阐明packageVersion()package_version()之间的区别...... 我认为这个问题在这里被顺便回答了,但我的问题重点是如何以编程方式获取信息(即,不仅要找出正在运行的版本,还要以适合在R中运行自动化版本测试的形式获取它)。

1
可能是我的电脑正在运行哪个版本的R?的重复问题。 - smci
@smci - 我不同意。这不是完全重复的 - Ben想要的不仅仅是打印出正在运行的版本。 - Dason
@Dason:这不是其他问题所要求的,也不是答案给出的。比如我的回答,我认为比被接受的答案更好。无论如何,如何规范化这个主题上的问题? - smci
@smci 这个链接中的问题说“现在我想知道正在运行的 R 是 2.15.1 还是 2.15.2”,并且绝不意味着他们需要以编程方式比较版本号。 - Dason
@Dason:这个问题并没有说他们不想以编程方式进行比较。也没有排除他们只是在命令行上使用“R --version”的可能性。这是一个开放性的问题。在我的答案中,我向他们展示了如何以编程方式访问它们。 - smci
@smci,我只是想说,在我看来,我不认为那个问题是一个完全的重复。那个问题留下了他们可能没有被编程比较的可能性。而这个问题则希望它们被编程比较。我并不想引发争论——只是陈述我的观点。而且似乎只有一个关闭投票(我猜是你的?),所以我不是唯一一个认为它不是重复的人。 - Dason
2个回答

7
这些内容在?R.Version帮助页面中有记录。实际上,它取决于您想要如何格式化/存储值。 packageVersion()从特定包中提取版本信息,并将其转换为package_version对象。 package_version()基本上将版本号解析为可以轻松比较的package_version值。
您可以使用以下方式比较版本:
package_version(R.version) > package_version("3.0.1")

或者类似的东西。

getRversion() 函数在 ?R.Version 帮助页面中指向一个自动返回 package_version 对象的函数。

getRversion() > package_version("3.0.1")

此外,package_version对象也可以自动转换与可兼容字符串相对应的版本号。

getRversion() > "3.0.1"

1
TMTOWTDI = 有多种方法可以做到。 - orizon

2
据我所知,version常量可以提供这些信息。在我的情况下:
version
## platform       x86_64-pc-linux-gnu         
## arch           x86_64                      
## os             linux-gnu                   
## system         x86_64, linux-gnu           
## status                                     
## major          3                           
## minor          2.2                         
## year           2015                        
## month          08                          
## day            14                          
## svn rev        69053                       
## language       R                           
## version.string R version 3.2.2 (2015-08-14)
## nickname       Fire Safety            
with(version, paste(major, minor, sep='.'))
## [1] "3.2.2"

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