【发布时间】:2021-11-09 13:00:34
【问题描述】:
我已经编写了一个循环来在 R 中安装包,虽然我知道还有其他方法可以批量安装包,但我不明白为什么循环不起作用:我收到错误消息:错误:@987654321 @ 必须是长度为 1 的字符向量。我不明白,因为 package[i] 应该返回一个字符向量。
packages<-c("dplyr","ggplot")
for (i in seq_along(packages)){
print(packages[i])
if (!require(packages[i])) install.packages(packages[i])
}
任何人都可以建议对上述代码进行任何修改吗?
【问题讨论】:
-
不行,我想专门调试一下上面的代码,试着理解为什么它不起作用。
-
你需要seq吗?为什么不只是
packages<-c("dplyr","ggplot") for (i in packages){ print(i) if (!require(i)) install.packages(i) } -
我认为这个问题与
require()函数中包名的预期输入格式有关。默认情况下,它需要一个不带引号的包名称。但是,您可以通过设置character.only = TRUE告诉它使用带引号的字符串。试试if (!require(packages[i], character.only = TRUE))注意你可以用if (!require(as.name(packages[i])))做相反的事情
标签: r