微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

安装新版本的 R 后恢复所有 R 包?

如何解决安装新版本的 R 后恢复所有 R 包?

当您进行 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() 应该能够处理这些,但我从未真正尝试过。

,

不要删除旧的“library”文件夹,而是将内容复制到新的“library”文件夹中。

例如。将 C:\Program Files\R\R-4.0.2\library 的内容复制到 C:\Program Files\R\R-4.0.3\library 中。这就是 R 会寻找它们的地方。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。