我应该如何引用导入包中的函数?

时间:2014-07-09 10:23:19

标签: r namespaces roxygen2

创建R包时,至少有两种方法可以引用导入包中的函数。

无论哪种,

  1. 每当你调用它时,使用双冒号运算符明确命名函数package::function

  2. 直接或通过importFrom(package, function) roxygen标记将NAMESPACE添加到#' @importFrom package function文件。

  3. 每种方法有哪些优点和缺点?

    每种语法达到的技术差异是什么?

1 个答案:

答案 0 :(得分:8)

赞成使用package::function

的论据

它完全清楚了函数的来源。

赞成使用@importFrom package function

的论据

它涉及较少的输入,特别是当您的包使用多次功能时。

由于它涉及查找包和调用::函数,package::function的运行时性能损失很小。请参阅https://stackoverflow.com/a/7283511/134830

总的来说,判决是什么?

这两种方法都可以完成这项工作,而且无论是哪种方式都没有压力,所以不要为此而失眠。只需选择一种方法并坚持下去。

我工作地点采用的政策是,对于一些常用的包,应使用@importFrom roxygen标签。例如,开发人员应该知道ddply来自plyr,或者来自str_的函数来自stringr。在这种情况下,函数的显式父母对于知道并不有用。对于此核心列表之外的函数,(或者如果有任何歧义),应使用::来明确它的来源。