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

标签 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)

该示例失败,因为 lasso.stars 依赖于 'glmnet',直到 bigdata 才加载。被附上。唯一能调用lasso.stars的方法是实际附加 bigdata包裹:
library(bigdata)
z1 = bigdata::lasso.stars(x,y)

现在使事情进一步复杂化,似乎这个问题被继承到在这种情况下导入 lasso.stars 函数的任何“孙子”包。我很难找到一个很好的例子,但我相信他们就在那里。

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

最佳答案

有兴趣的可以继续讨论here在 r-devel 邮件列表中:

关于未附加命名空间时的 R 包依赖性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10559350/

相关文章:

r - 为什么基R中的Date类有一个double支持

r - 在 R 中查找和替换多个项目

r - 如何使这个嵌套 for 循环工作得更快

R:在等待用户输入的同时运行计算

r - CRAN 发现警告 R CMD check --as-cran does not

r - 将列表的多个元素转换为矩阵 R

java - 卸载 rJava 和/或重新启动 JVM

r - 列出从R包导出的对象而不附加它

r - 有 R 包存储库管理工具吗?

解决包未找到 : m2w64_c_win-64 while building R package r-ffbase