我目前有以下代码来查看当前的R版本是否不等于3.5.0。但是,我想更改它,以便如果某人的R版本早于3.5.0,它会发出警告以更新R。因为3.5.0并非“小于” 3.4.0等,所以我遇到了问题创建布尔命令,因为计算机无法将3.4.0识别为“小于” 3.5.0。有什么方法可以促进这种情况吗?
if(strsplit(version[['version.string']], ' ')[[1]][3] != '3.5.0'){
print("Warning: Update R")
}
答案 0 :(得分:2)
您可以通过删除点将3.5.0
之类的版本号转换为350
。这样,您可以轻松比较当前版本和目标版本:
if(gsub(".", "", strsplit(version[['version.string']], ' ')[[1]][3], fixed = TRUE) < '350'){
print("Warning: Update R")
}
答案 1 :(得分:2)
C接口具有很好的便利性。您可以看到其定义:
#define R_VERSION 197890
#define R_NICK "Eggshell Igloo"
#define R_Version(v,p,s) (((v) * 65536) + ((p) * 256) + (s))
因此您可以执行以下操作:
#include <Rversion.h>
// [[Rcpp::export]]
bool isVersionOutdated() {
#if R_VERSION < R_Version(3, 5, 1)
return true;
#else
return false;
#endif
}
R侧:
library(Rcpp)
sourceCpp("test.cpp")
isVersionOutdated()
[1] FALSE