簡體   English   中英

如何維護R(renv)項目

[英]How to maintain R (renv) project

我和我的同事正在 RStudio 中使用 Bookdown 編寫一本書。 由於我使用 ggplot 創建了很多圖形,因此我對其他包(ggplot、ggforce、gganimate 等)有很多依賴關系,因此我在本書的過程中添加了 renv 來處理包管理。 在我的 Windows 干凈安裝后,我現在再次設置項目時遇到問題,因為有從 R 到版本 3.6.3 的更新和使用的包。

使用 renv 的項目的初始狀態是 R 版本 3.6.2,我重新安裝了它。 打開項目后,我運行renv::restore()來恢復所有包的環境。 目前只有包 nloptr(版本 1.2.1)有一個錯誤,因為它必須從源代碼構建包。

Installing minqa [1.2.4] ...
    OK (linked cache)
Installing nloptr [1.2.1] ...
    FAILED
Error installing package 'nloptr':
==================================

* installing *source* package 'nloptr' ...
** package 'nloptr' successfully unpacked and MD5 sums checked
** using staged installation

   **********************************************
   WARNING: this package has a configure script
         It probably needs manual configuration
   **********************************************


** libs
C:/Rtools/mingw_64/bin/g++ -std=gnu++11  -I"C:/PROGRA~1/R/R-36~1.2/include" -DNDEBUG          -O2 -Wall  -mtune=generic -c dummy.cpp -o dummy.o
C:/Rtools/mingw_64/bin/gcc  -I"C:/PROGRA~1/R/R-36~1.2/include" -DNDEBUG       -I"/x64/include"   -O2 -Wall  -std=gnu99 -mtune=generic -c init_nloptr.c -o init_nloptr.o
init_nloptr.c:35:19: fatal error: nlopt.h: No such file or directory
 #include "nlopt.h"
                   ^
compilation terminated.
make: *** [C:/PROGRA~1/R/R-36~1.2/etc/x64/Makeconf:208: init_nloptr.o] Error 1
ERROR: compilation failed for package 'nloptr'
* removing 'C:/Users/Ralph/DOCUME~1/ML2/ml2-buch/renv/staging/1/nloptr'
Fehler: install of package 'nloptr' failed

要解決此錯誤,我通過以下方式手動安裝軟件包:

packageurl <- "https://cran.r-project.org/bin/windows/contrib/3.7/nloptr_1.2.1.zip"
install.packages(packageurl, repos=NULL, type="binary")

之后可以安裝所有軟件包,但現在,其中許多package 'X' was built under R version 3.6.3顯示警告package 'X' was built under R version 3.6.3

如果renv不能恢復原始狀態,因為所有包都被 R 的更新更改了,那還有什么意義呢? 如何正確管理 R 項目?

這里的潛在問題是nloptr最近更新到版本 1.2.2.1,因此 1.2.1 的二進制文件在 CRAN 上不再可用。

那么,最簡​​單的解決方案是升級到最新版本的nloptr ,以便您可以訪問較新的二進制文件。 或者,您可以使用鎖定到該特定時間點的檢查點MRAN存儲庫,以便可以提供當天可用的二進制文件。

如果您希望能夠從源代碼安裝nloptr ,您可以考慮升級到renv的開發版本。 您可以使用renv::equip() ) 從源下載編譯nloptr (和其他一些 R 包)所需的必要庫。 例如:

> renv::equip()
The following external software tools will be installed:

    curl-7.68.0-win32-mingw.zip
    glpk32.zip
    glpk64.zip
    local323.zip
    nlopt-2.4.2.zip
    spatial324.zip

Tools will be installed into '~/AppData/Local/renv/extsoft'.

Do you want to proceed? [y/N]: y
Retrieving 'https://s3.amazonaws.com/rstudio-buildtools/extsoft/curl-7.68.0-win32-mingw.zip' ...
    OK [downloaded 2.9 Mb in 1.5 secs]
Retrieving 'https://s3.amazonaws.com/rstudio-buildtools/extsoft/glpk32.zip' ...
    OK [downloaded 457.7 Kb in 1 secs]
Retrieving 'https://s3.amazonaws.com/rstudio-buildtools/extsoft/glpk64.zip' ...
    OK [downloaded 481.6 Kb in 1 secs]
Retrieving 'https://s3.amazonaws.com/rstudio-buildtools/extsoft/local323.zip' ...
    OK [downloaded 9.6 Mb in 2.3 secs]
Retrieving 'https://s3.amazonaws.com/rstudio-buildtools/extsoft/nlopt-2.4.2.zip' ...
    OK [downloaded 752.6 Kb in 1.2 secs]
Retrieving 'https://s3.amazonaws.com/rstudio-buildtools/extsoft/spatial324.zip' ...
    OK [downloaded 20.9 Mb in 2.6 secs]
* External software successfully updated.
The following entries will be added to ~/.R/Makevars:

    LOCAL_SOFT = C:/Users/kevin/AppData/Local/renv/extsoft
    LIB_XML = C:/Users/kevin/AppData/Local/renv/extsoft
    LOCAL_CPPFLAGS = -I"$(LOCAL_SOFT)/include"
    LOCAL_LIBS = -L"$(LOCAL_SOFT)/lib$(R_ARCH)" -L"$(LOCAL_SOFT)/lib"

These tools will be used when compiling R packages from source.

Do you want to proceed? [y/N]: y
* '~/.R/Makevars' has been updated.

> install.packages("nloptr", type = "source")
* installing *source* package 'nloptr' ...
** package 'nloptr' successfully unpacked and MD5 sums checked
** using staged installation

   **********************************************
   WARNING: this package has a configure script
         It probably needs manual configuration
   **********************************************


** libs

*** arch - i386
c:/Rtools/mingw_32/bin/g++ -std=gnu++11  -I"C:/R/R-36~1.2RC/include" -DNDEBUG     -I"C:/Users/kevin/AppData/Local/renv/extsoft/include"     -g -O2 -Wall -pedantic -c dummy.cpp -o dummy.o
c:/Rtools/mingw_32/bin/gcc  -I"C:/R/R-36~1.2RC/include" -DNDEBUG     -I"C:/Users/kevin/AppData/Local/renv/extsoft/include"  -I"/i386/include"   -g -O3 -Wall -pedantic -c init_nloptr.c -o init_nloptr.o
c:/Rtools/mingw_32/bin/g++ -std=gnu++11 -shared -s -static-libgcc -o nloptr.dll tmp.def dummy.o init_nloptr.o nloptr.o -L/i386/lib -lnlopt_cxx -LC:/Users/kevin/AppData/Local/renv/extsoft/lib/i386 -LC:/Users/kevin/AppData/Local/renv/extsoft/lib -LC:/R/R-36~1.2RC/bin/i386 -lR
installing to C:/Users/kevin/R/win-library/3.6/00LOCK-nloptr/00new/nloptr/libs/i386

*** arch - x64
c:/Rtools/mingw_64/bin/g++ -std=gnu++11  -I"C:/R/R-36~1.2RC/include" -DNDEBUG     -I"C:/Users/kevin/AppData/Local/renv/extsoft/include"     -g -O2 -Wall -pedantic -c dummy.cpp -o dummy.o
c:/Rtools/mingw_64/bin/gcc  -I"C:/R/R-36~1.2RC/include" -DNDEBUG     -I"C:/Users/kevin/AppData/Local/renv/extsoft/include"  -I"/x64/include"   -g -O3 -Wall -pedantic -c init_nloptr.c -o init_nloptr.o
c:/Rtools/mingw_64/bin/g++ -std=gnu++11 -shared -s -static-libgcc -o nloptr.dll tmp.def dummy.o init_nloptr.o nloptr.o -L/x64/lib -lnlopt_cxx -LC:/Users/kevin/AppData/Local/renv/extsoft/lib/x64 -LC:/Users/kevin/AppData/Local/renv/extsoft/lib -LC:/R/R-36~1.2RC/bin/x64 -lR
installing to C:/Users/kevin/R/win-library/3.6/00LOCK-nloptr/00new/nloptr/libs/x64
** R
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
  converting help for package 'nloptr'
    finding HTML links ... done
    auglag                                  html  
    bobyqa                                  html  
    ccsaq                                   html  
    check.derivatives                       html  
    cobyla                                  html  
    crs2lm                                  html  
    direct                                  html  
    is.nloptr                               html  
    isres                                   html  
    lbfgs                                   html  
    mlsl                                    html  
    mma                                     html  
    neldermead                              html  
    newuoa                                  html  
    nl.grad                                 html  
    nl.opts                                 html  
    nloptr-package                          html  
    nloptr                                  html  
    nloptr.get.default.options              html  
    nloptr.print.options                    html  
    print.nloptr                            html  
    sbplx                                   html  
    slsqp                                   html  
    stogo                                   html  
    tnewton                                 html  
    varmetric                               html  
** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
*** arch - i386
*** arch - x64
** testing if installed package can be loaded from final location
*** arch - i386
*** arch - x64
** testing if installed package keeps a record of temporary installation path
* DONE (nloptr)

The downloaded source packages are in
    'C:\Users\kevin\AppData\Local\Temp\RtmpW4Mr1M\downloaded_packages'

您可以使用以下命令安裝renv的開發版本:

renv::upgrade(version = "master")

確保在更新renv后重新啟動 R 會話。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM