我想在roxygen2制成的R包中创建两个完全相同但名称不同的函数。
非常清楚,假设
first <- function(x) {
x + 2
}
我想要另一个这样的功能second
identical(first, second)
# [1] TRUE
A function can be given an alias,但这并不意味着其别名是可调用函数-而是意味着您可以将?myalias
调用到display the help file for the original function。但是myalias
在包中是 不是 的可调用函数-也就是说,除了?
之外,您不能实际使用它。
根据Hadley的文档:
别名是可以与?一起使用的主题的另一个名称。
可以通过暴力破解两个不同名称下的相同函数-即通过复制声明原始函数的文件并在重复代码中简单地更改其名称。
这显然很乏味,违反了DRY,并引发了膨胀。
有没有更好的方法?一种不涉及大规模代码重复的代码?
答案 0 :(得分:3)
使用
#' @rdname first
#' @export
second <- first
因此,如果first.R
最初看起来像这样
#' A function that adds 2
#' @name first
#' @usage first(x)
#' @param x a number
#' @export
first <- function(x) {
x + 2
}
然后只需像这样包含多余的代码行(最后三行都已更改)
#' A function that adds 2
#' @name first
#' @usage first(x)
#' @param x a number
#' @export
first <- function(x) {
x + 2
}
#' @rdname first
#' @export
second <- first