4

我正在从其类在各种 R 包中定义的对象中提取信息。例如,我从各种统计模型中提取系数(并不总是使用 coef 方法)。我通常不必导入这些包,因为我定义了一个通用函数,用户可以为其添加方法。每种统计模型都有一种方法,如果用户只对一种特定的模型类型感兴趣,那么导入所有这些模型定义将是愚蠢的。

但是,在某些情况下,我需要使用包中定义的函数。例如, lme4 包中的 confint.merMod 方法。到目前为止,我曾经package::function调用这些函数并将这个命令包装在一个exists(function)if 条件中,以确保该包确实提供了该功能(因为该功能可能仅在某些版本的包中可用)。

但是,我刚刚在http://developer.r-project.org/blosxom.cgi/R-devel/NEWS(参见 2013 年 9 月 5 日)上发现,在 R 版本 3.0.2 中,“'R CMD check' 做了更多彻底检查声明的包和命名空间。它报告 [...] 由 '::' 导入的未导出的对象。

这是否意味着我真的必须添加export("function")到 NAMESPACE 文件中?CMD 检查不会因为该函数是有条件地导入而抱怨吗?

4

1 回答 1

2

为未来的访客澄清/总结......

R-devel News 在与现在3-0-branch NEWS文件相关的问题中引用,其中特定条目列出了特定案例,这些案例R CMD check将针对包和函数的导入、使用和声明发现的问题生成报告。

如果您对特定警告有疑问,该列表值得一看。

有关更多(和更深入)的信息,请参阅 wiki 页面以获取指向编写 R 扩展R 开发指南和其他有用信息的链接。

于 2014-05-01T04:54:06.407 回答