当我启动和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(质量)中的错误:找不到对象‘质量’
我可以硬编码它来接受对象而不是字符串,如下所示,
libver <- function(pac){
library( deparse(substitute(pac), character.only=TRUE)
packageVersion(deparse(substitute(pac))
}但如果可以的话,我想保持这两种方法的灵活性。
发布于 2017-09-22 02:12:40
!is.character(pac)返回一个错误,当pac是裸包名时,没有引号。相反,您可以执行pac = as.character(substitute(pac)),它将返回一个字符串,而不管参数最初是否为字符串。
libver <- function(pac) {
pac = as.character(substitute(pac))
library(pac, character.only=TRUE)
packageVersion(pac)
}发布于 2017-09-22 01:26:20
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’https://stackoverflow.com/questions/46354826
复制相似问题