我正在从其类在各种 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 检查不会因为该函数是有条件地导入而抱怨吗?