簡體   English   中英

R:require(foo,lib.loc = bar)不會將lib.loc = bar轉發給依賴項

[英]R: require(foo, lib.loc=bar) does not forward lib.loc=bar to dependencies

我有一個單獨的庫文件夾。 我安裝了ks ,如下所示:

> install.packages('ks', lib='packages')

  There is a binary version available (and will be
  installed) but the source version is later:
   binary source
ks  1.9.2  1.9.4

also installing the dependencies 'KernSmooth', 'misc3d', 'mvtnorm', 'rgl', 'multi cool'

現在,我想加載這些軟件包。

> require(ks, lib.loc='packages')
Loading required package: ks
Failed with error:  'package 'KernSmooth' required by 'ks' could not be found'

也就是說, require查找ks但不查找KernSmooth因為它沒有嘗試從packages加載KernSmooth 我可以手動加載它:

> require(KernSmooth, lib.loc='packages')
Loading required package: KernSmooth
KernSmooth 2.23 loaded
Copyright M. P. Wand 1997-2009
Warning message:
package 'KernSmooth' was built under R version 3.1.2 

我可以再次嘗試require(ks, lib.loc='packages) ,但是它會告訴我下一個包misc3d也尚未加載。

我是否必須從庫文件夾中手動加載所有依賴項? 我希望它可以自動工作,即如果我require(foo, bar)foo也將嘗試從bar加載其依賴項。

函數.libPaths用於獲取和設置R查找軟件包的路徑。 如果執行以下操作,則應該可以正常工作。

install.packages('ks', lib='packages')

.libPaths("packages")
require(ks)

實際上,如果您打算大量使用"packages" ,則甚至可以在安裝前對其進行設置,這默認情況下會使所有新軟件包都放在那里。

.libPaths("packages")
.libPaths()
 [1] "/home/christofer/packages" "/usr/local/lib/R/site-library" [3] "/usr/lib/R/site-library" "/usr/lib/R/library" 
install.packages('ks')
 Installing package into '/home/christofer/packages' (as 'lib' is unspecified) ... 
require(ks)

暫無
暫無

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

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