是否有一种方法可以在r中自动重新安装软件包及其依赖项?

问题描述 投票:0回答:1

所以我在Rstudio上使用installR将R更新到版本4.0.0,它将包中的文件复制到R中的库文件中,目录为:C:\Users\Ibrahim\Documents\R\R-4.0.0\library

[每当我调用一个程序包时,例如tidytext,它都会给我:

library(tidytext)
Error: package or namespace load failed for ‘tidytext’:
 package ‘tidytext’ was installed before R 4.0.0: please re-install it 

然后我会尝试安装它,它会给我:

install.packages('tidytext')
WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding:

https://cran.rstudio.com/bin/windows/Rtools/
trying URL 'https://cran.rstudio.com/bin/windows/contrib/4.0/tidytext_0.2.4.zip'
Content type 'application/zip' length 3008780 bytes (2.9 MB)
downloaded 2.9 MB

package ‘tidytext’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
    C:\Users\Ibrahim\AppData\Local\Temp\Rtmpmo5Lza\downloaded_packages

再次调用会得到:

library(tidytext)
Error: package or namespace load failed for ‘tidytext’:
 package ‘tokenizers’ was installed before R 4.0.0: please re-install it

而且我将继续安装下一个依赖项并重新调用该程序包,直到最终起作用为止。

我尝试使用我发现的这段代码将其自动化:

lib_loc <- "C:/Users/Ibrahim/Documents/R/R-4.0.0/library"
to_install <- unname(installed.packages(lib.loc = lib_loc)[, "Package"])
to_install
install.packages(pkgs = to_install)
install.packages(pkgs = to_install, dependencies=T, INSTALL_opts='--no-lock')

这会在目录中创建一堆.zip文件:C:\Users\Ibrahim\AppData\Local\Temp\Rtmpmo5Lza\downloaded_packages

但是一段时间后,它最终锁定,在初始/ library目录中创建一个名为00LOCK的文件夹/文件,并停止该过程。

然后我将其删除,但是当我再次运行代码时,我想也许它会重做许多已经完成的文件,并且最终仍然会再次锁定。我做错什么了吗?有办法解决这个问题吗?手动执行是非常痛苦的。我应该重新安装RStudio吗?我失去了希望。

r package install downloadfile
1个回答
0
投票

某些R软件包在将R升级到较新版本后确实需要重新编译。这可能是您的情况。要重新安装和更新这些old软件包(即在R的早期版本下构建的软件包),您可以尝试在R控制台中运行以下代码:

update.packages(ask = FALSE,
                checkBuilt = TRUE)

ask参数防止R不断要求您确认每个软件包的每次更新,而checkBuilt参数是重新安装在R的早期版本下构建的所有软件包。

更多信息,请参见documentation或在RStudio的R控制台中键入?update.packages。希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.