我想要一个无人值守的解决方案来更新当前R版本中的所有软件包,因此我编写了一个实质上可以令人满意地工作的函数。
updPcks <- function() {
l <- length(.packages()) != 7 # check if 'other' packages are loaded
if (l) {
lapply(paste('package:', names(sessionInfo()$otherPkgs), sep=""), detach,
character.only=TRUE, unload=TRUE) # unload 'other' packages
}
update.packages(ask=FALSE)
}
但是,至少在两种情况下,该过程会因弹出对话框而中断,例如
“您要从源安装需要编译的软件包吗?”
和
“您想改用个人图书馆吗?”
在这种情况(以及其他情况下)中,仅选择 “否” (但避免降级!),就目前和节省时间而言就足够了。
我可能不希望停止更新过程,因此可能分别抛出错误消息或警告。无论如何,应该像手动更新过程中那样保留控制台中有关失败和成功的所有信息。
有没有办法做到这一点?
> sessionInfo()
R version 3.5.0 (2018-04-23)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
Matrix products: default
locale:
[1] LC_COLLATE=German_Switzerland.1252 LC_CTYPE=German_Switzerland.1252 LC_MONETARY=German_Switzerland.1252
[4] LC_NUMERIC=C LC_TIME=German_Switzerland.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_3.5.0 tools_3.5.0 yaml_2.1.19