我从其各种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检查不会抱怨因为该功能只是有条件地导入了吗?
答案 0 :(得分:2)
澄清/总结未来的访客......
R-devel News在与现在 3-0-branch NEWS 文件相关的问题中引用,其中 specific entry 列出r 特定案例{ {1}}将为导入,使用和包和函数声明中发现的问题生成报告。
如果您对特定警告有疑问,请查看该列表。
有关更多(和更深入)的信息,请参阅wiki page {{3}}以获取书写R扩展程序 R开发指南的链接以及其他有用信息。