我正在为R包编写一些代码,需要在创建文件时将当前包版本与包版本的记录进行比较。基本上,如果文件是由旧版本的包创建的,则需要检查文件格式的更改。我现在得到的是:
file_version<-get_file_version() # evals to a numeric like 100 or 302
pkg_version<-as.numeric(paste0(unlist(packageVersion('my.package')), collapse=""))
if (file_version < pkg_version) upgrade_fileformat() # checks and performs updates
所以,这将有效,但似乎应该有一个更简洁的方法来做这个没有函数三明治分配给pkg_version变量。有没有人知道我所描述的更好的比较方法?
答案 0 :(得分:1)
而不是录制数字,录制packageVersion("my.package")
,然后在强制读取package_version()
时,以便比较运算符按预期工作。
ver <- as.numeric_version("3.10.1")
ver < "3.11"
# [1] TRUE
ver > "3"
# [1] TRUE