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

use*_*230 5 r github repository cran install.packages

当您进行更新时,当某些软件包打开但其余软件包(或其他来源)R打开时,重新安装和更新先前R版本上已安装的所有软件包的最佳方法是什么?CRANgithub

过去,我遵循以下方法:

打开旧版本R(例如R 3.6)并复制所有已安装的软件包:

installed <- as.data.frame(installed.packages())
#save a copy
write.csv(installed, 'previously_installed.csv')
Run Code Online (Sandbox Code Playgroud)

然后安装并打开新版本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)
Run Code Online (Sandbox Code Playgroud)

这非常有效,但只会安装已打开的软件包,因此不会安装CRAN所有已打开的软件包。github有没有办法自动安装这些软件包github

您可以找出哪些软件包未安装(例如剩余的github软件包):

git_packages_not_installed <- install.lib[!install.lib %in% installed.packages()] 
Run Code Online (Sandbox Code Playgroud)

我认为您需要知道作者姓名才能安装所有github软件包,所以我不确定如何自动执行此操作(例如devtools::install_github("DeveloperName/PackageName")。我知道您可以提供两个存储库选项,但我不确定这是否有帮助或参见此处

在这种情况下,最佳实践是什么?

谢谢

use*_*330 5

如果您只使用 CRAN 软件包,我的建议与 @CaptainHat 的建议类似,但需要一个额外的步骤:首先将所有旧软件包复制到新位置,然后调用update.packages(checkBuilt = TRUE, ask = FALSE). 这将更新为不兼容的早期 R 版本构建的包。(仅复制尚不存在的包。如果复制基础包,则会破坏 R。)

不幸的是,它不知道如何更新从 Github 安装的软件包。我相信remotes::update_packages()应该能够处理这些,但我从未真正尝试过。


Cap*_*Hat 0

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

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

  • 默认 R 仅存储 R-4.0 与 R-4.1 等主要版本的库。仅复制文件而不针对不同版本重新编译通常会导致严重错误,尤其是从 R-3-6 到 R-4-0。这可能适用于没有编译代码的仅 R 包,但它仍然不是一个真正推荐的版本之间转换的方法(从一台计算机复制到另一台具有相同 R 版本的计算机可能会更安全) (3认同)