package <- c("car","ggplot2","pastecs","psych")
for (i in package){
if (!(i %in% rownames(installed.packages()))){
install.packages(i)
} else{
print(paste(i,"has been installed"))
library(i)
}
}
我写了一个循环来查看软件包是否已安装,如果它可用,库应该加载它。
However I got an error: there is no package called 'i'
为什么我不能将变量i
中的值传递给library
函数?
答案 0 :(得分:3)
这是一个更简单的代码版本(包含@ csgillespie的建议):
p <- c("car","ggplot2","pastecs","psych")
for(i in seq_along(p)) {
if(!require(p[i], character.only=TRUE)) {
install.packages(p[i])
library(p[i], character.only=TRUE)
}
}
请注意,由于library
和require
中的非标准评估,您的代码无效。 character.only
参数解决了这个问题(根据文档? library
):
character.only
指示包或帮助是否可以假定为字符串的逻辑。