有没有办法自动在R中重新安装软件包及其依赖项?

时间:2020-05-31 14:46:16

标签: r package installation downloadfile

因此我在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')

这将在目录C:\Users\Ibrahim\AppData\Local\Temp\Rtmpmo5Lza\downloaded_packages

中创建一堆.zip文件。

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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