使用roxygen2在R包中具有相同的功能但具有两个不同的名称吗?

时间:2019-09-03 11:26:44

标签: r roxygen2

我想在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,并引发了膨胀。

问题

有没有更好的方法?一种不涉及大规模代码重复的代码?

1 个答案:

答案 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