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

Jer*_*oen 11 r cran

我一直认为在'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)
Run Code Online (Sandbox Code Playgroud)

该示例失败,因为lasso.stars依赖于'glmnet',它bigdata在连接之前未加载.能够调用的唯一方法lasso.stars是实际附加bigdata包:

library(bigdata)
z1 = bigdata::lasso.stars(x,y)
Run Code Online (Sandbox Code Playgroud)

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

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

Jer*_*oen 2

对于那些感兴趣的人,可以在 r-devel 邮件列表上继续讨论: