我是否必须通过:: in R导出有条件导入的函数?

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

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

但是,我刚刚在http://developer.r-project.org/blosxom.cgi/R-devel/NEWS(参见2013年9月5日)发现,在R 3.0.2版中,“’R CMD检查’对声明的包和名称空间进行了更彻底的检查.它报告了由”导入的对象: :’哪些没有出口.“

这是否意味着我真的必须将导出(“函数”)添加到NAMESPACE文件中? CMD检查不会抱怨因为该功能只是有条件地导入吗?

最佳答案 澄清/总结未来的访客……

R-devel News在问题中引用了与现在3-0分支的NEWS文件相关的内容,其中specific entry列出了R CMD检查将针对包含和功能的导入,使用和声明发现的问题生成报告的特定情况.

如果您对特定警告有疑问,请查看列表.

有关更多(和更深入)的信息,请参阅r wiki page以获取“写入R扩展R开发指南”的链接和其他有用信息.

点赞