当我启动和R脚本时,我想检查他们的包版本。我倾向于运行类似
的东西 library(dplyr); packageVersion("dplyr")
这很好用,但是我想把它缩短成一个加载库然后返回它的版本的函数。
我希望libary函数接受一个库名的字符串,或者只接受自己键入的库名。
我试过这个功能:
libver <- function(pac){
if(!is.character(pac)){
pac <- deparse(substitute(pac))
}
library(pac, character.only=TRUE)
packageVersion(pac)
}
但这适用于字符串输入但不适用于非字符串输入
libver(MASS)
libver(MASS)出错:对象&#39; MASS&#39;找不到
我可以硬编码来获取对象而不是字符串,如下所示,
libver <- function(pac){
library( deparse(substitute(pac), character.only=TRUE)
packageVersion(deparse(substitute(pac))
}
但是如果可以的话,我希望保持灵活性。
答案 0 :(得分:3)
!is.character(pac)
是裸包名称而没有引号时, pac
会返回错误。相反,您可以执行将返回字符串的pac = as.character(substitute(pac))
,无论该参数最初是否为字符串。
libver <- function(pac) {
pac = as.character(substitute(pac))
library(pac, character.only=TRUE)
packageVersion(pac)
}
答案 1 :(得分:2)
libver <- function(pac){
pac <- gsub("\"","",deparse(substitute(pac)))
library(pac,character.only = T)
packageVersion(pac)
}
libver(dplyr)
[1] ‘0.7.2’
libver("dplyr")
[1] ‘0.7.2’