当你在做 R
更新,重新安装和更新以前安装的所有软件包的最佳方法是什么 R
版本当您的某些包裹在 CRAN
上时但其余的都在 github
(或其他来源)?
过去,我关注了this方法:
打开旧版R
(例如 R 3.6
)并复制所有已安装的软件包:
installed <- as.data.frame(installed.packages())
#save a copy
write.csv(installed, 'previously_installed.csv')
然后安装并打开R
的新版本(例如 R 4.1
),读入旧的包名并安装(默认: CRAN
):previously_installed <- read.csv('previously_installed.csv')
package_list <- as.character(previously_installed$Package)
package_list
install.lib <- package_list[!package_list %in% installed.packages()]
for(lib in install.lib) install.packages(lib, dependencies = TRUE)
这非常有效,但只会安装 CRAN
上的软件包所以所有仅在 github
上的包不会安装。有没有办法从 github
自动安装这些包?你可以找出哪些包没有安装(例如剩余的
github
包):git_packages_not_installed <- install.lib[!install.lib %in% installed.packages()]
我认为您需要知道作者姓名才能安装所有 github
包,所以我不确定如何自动执行此操作(例如 devtools::install_github("DeveloperName/PackageName")
。我知道您可以提供两个存储库选项,但我不确定这个 helps 或查看 here 。在这种情况下,最佳实践是什么?
谢谢
最佳答案
如果您只使用 CRAN 包,我的建议将类似于@CaptainHat 的建议,但有一个额外的步骤:首先将所有旧包复制到新位置,然后调用 update.packages(checkBuilt = TRUE, ask = FALSE)
.这将更新为不兼容的早期 R 版本构建的那些。(只复制那些不存在的。如果你复制基础包,那会破坏 R。)
不幸的是,它不知道如何更新您从 Github 安装的软件包。我相信remotes::update_packages()
应该能够处理这些,但我从未真正尝试过。
关于安装新版本的 R 后恢复所有 R 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65817504/