繁体   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