创建R包时,至少有两种方法可以引用导入包中的函数。
要么
每当您调用函数时,都使用双冒号运算符明确命名该函数package::function
。
直接或通过roxygen标签添加importFrom(package, function)
到NAMESPACE
文件中#' @importFrom package function
。
每种方法的优缺点是什么?
每种语法所实现的内容是否存在技术上的差异?
赞成使用的论点 package::function
它可以完全清楚地知道函数的来源。
赞成使用的论点 @importFrom package function
它涉及较少的类型输入,尤其是当程序包多次使用函数时。
由于涉及查找包和对::
函数的调用,package::function
因此运行时性能损失较小。参见https://stackoverflow.com/a/7283511/134830。
总而言之,判决是什么?
两种方法都能胜任工作,并且无论哪种方式的论点都不会让人感到不知所措,因此请不要为此而睡不着。只需选择一种方法并坚持下去即可。
在我的工作地点已采用的政策是,对于一些常用的包装,@importFrom
应使用roxygen标签。例如,开发人员应该知道ddply
起源于plyr
或功能str_
起源于stringr
。在这种情况下,函数的显式父项并不是那么有用。对于超出此核心列表的功能,(或是否存在歧义)::
应使用它来明确说明其来源。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句