启动R时,我在Rprofile.site中使用此代码加载程序包。
pkg <- c("dplyr", "tidyr", "crayon", "xlsx")
apply(as.matrix(pkg), 1, function(x) {
if (!x %in% utils::installed.packages()) {
utils::install.packages(x)
cat(paste0("package ", x, " installed\n"))
}
x <- require(x, character.only = T)
})
它可以正常工作,但是将[1] TRUE TRUE TRUE TRUE
打印到控制台。我知道我可以使用stdout
来转移textConnection(); sink(); [code]; sink(); close()
,但这似乎需要很多工作。有没有一种方法可以减少打字?
tc <- textConnection("outputs","w")
sink(tc, type="output")
pkg <- c("dplyr", "tidyr", "crayon", "xlsx")
apply(as.matrix(pkg), 1, function(x) {
if (!x %in% utils::installed.packages()) {
utils::install.packages(x)
cat(paste0("package ", x, " installed\n"))
}
require(x, character.only = T)
})
sink(NULL, type="output")
close(tc)
答案 0 :(得分:2)
选项:
您可以对d
的输出使用invisible
删除输出。
或者您可以使用apply
包执行您的操作。
或者下面的代码应该更简洁(请参见 Check for installed packages before running install.packages()):
pacman