繁体   English   中英

未附加名称空间时的R包依赖性问题

[英]R package dependency issues when namespace is not attached

我一直认为在'Depends'字段中有一个包会自动导入命名空间。 但是,似乎在R 2.15中,在包实际附加到搜索路径之前,依赖性不可用。 这是预期的行为吗?

问题如下所示:假设有一个包'Child' 取决于 ,但没有显式导入名为'Parent'的包,并包含一个调用'Parent'命名空间中的对象的函数。 然后,在没有实际附加“Child”的情况下调用此函数时,无法找到“Parent”中的函数。

这里是bigdata包手册中的一个例子,但问题非常普遍:

x = matrix(rnorm(50*80),50,80)
beta = c(3,2,1.5,rep(0,77))
y = rnorm(50) + x%*%beta
z1 = bigdata::lasso.stars(x,y)

该示例失败,因为lasso.stars依赖于'glmnet',直到附加bigdata才会加载。 能够调用lasso.stars的唯一方法是实际附加bigdata包:

library(bigdata)
z1 = bigdata::lasso.stars(x,y)

现在为了进一步复杂的事情,看来这个问题被继承到任何“孙子”包,在这种情况下, 进口 lasso.stars功能。 我很难找到一个很好的例子,但我相信他们在那里。

这是一个错误吗? 我知道可以通过要求包作者使用Imports而不是Depends来避免它,但实际上CRAN上的大多数包仍然使用Depends。 如果R会自动将任何Depends包的命名空间导入子包命名空间,似乎很容易避免这个问题。

对于那些感兴趣的人, 这里继续讨论r-devel邮件列表:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM