[英]How should I reference functions in imported packages?
创建R包时,至少有两种方法可用于引入导入包中的函数。
要么,
每次调用它时,使用双冒号运算符明确命名函数, package::function
。
将importFrom(package, function)
直接添加到NAMESPACE
文件中,或通过#' @importFrom package function
roxygen标记添加。
每种方法有哪些优缺点?
每种语法实现的技术差异是否存在?
支持使用package::function
它完全清楚了功能的来源。
支持使用@importFrom package function
它涉及较少的打字,特别是当您的包使用多次功能时。
由于它涉及查找包和调用::
function,因此package::function
的运行时性能损失很小。 请参阅https://stackoverflow.com/a/7283511/134830 。
总的来说,判决是什么?
这两种方法都可以完成这项工作,并且无论是哪种方式都不是压倒性的,所以不要为此而失眠。 只需选择一种方法并坚持下去。
在我的工作地点采用的政策是,对于一些常用的包,应使用@importFrom
roxygen标签。 例如,开发人员应该知道ddply
来自plyr
,或者起始str_
函数来自stringr
。 在这种情况下,函数的显式父母对于知道并不那么有用。 对于这个核心列表之外的函数,(或者如果有任何歧义) ::
应该用来清楚它来自哪里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.