创建R包时,至少有两种方法可以引用导入包中的函数。
无论哪种,
每当你调用它时,使用双冒号运算符明确命名函数package::function
。
直接或通过importFrom(package, function)
roxygen标记将NAMESPACE
添加到#' @importFrom package function
文件。
每种方法有哪些优点和缺点?
每种语法达到的技术差异是什么?
答案 0 :(得分:8)
赞成使用package::function
它完全清楚了函数的来源。
赞成使用@importFrom package function
它涉及较少的输入,特别是当您的包使用多次功能时。
由于它涉及查找包和调用::
函数,package::function
的运行时性能损失很小。请参阅https://stackoverflow.com/a/7283511/134830。
总的来说,判决是什么?
这两种方法都可以完成这项工作,而且无论是哪种方式都没有压力,所以不要为此而失眠。只需选择一种方法并坚持下去。
我工作地点采用的政策是,对于一些常用的包,应使用@importFrom
roxygen标签。例如,开发人员应该知道ddply
来自plyr
,或者来自str_
的函数来自stringr
。在这种情况下,函数的显式父母对于知道并不有用。对于此核心列表之外的函数,(或者如果有任何歧义),应使用::
来明确它的来源。