gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 01:40:18 25 4
gpt4 key购买 nike

我想在 roxygen2 制作的 R 包中创建两个完全相同但名称不同的函数。

期望的结果

说的很清楚,假设

first <- function(x) {
x + 2
}

我想要另一个函数 second 这样

identical(first, second)
# [1] TRUE

目前我所知道的

A function can be given an alias ,但这并不意味着它的别名是一个可调用函数 - 相反,它意味着您可以调用 ?myaliasdisplay the help file for the original function .但是 myalias 不是 包中的可调用函数 - 也就是说,除了 之外,您实际上不能将它用于任何其他用途?

来自 Hadley 的文档:

An alias is another name for the topic that can be used with ?.

一个不优雅的解决方案

可以通过蛮力使用两个不同名称的相同函数 - 即通过复制声明原始函数的文件并在复制代码中简单地更改其名称。

这显然很繁琐,违反了DRY ,并引入膨胀。

问题

有没有更好的办法;一个不涉及大规模代码重复的?

最佳答案

使用

#' @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
}

然后像这样简单地包含额外的代码行(最后 3 行都是更改)

#' 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

关于r - 相同的功能,但在使用 roxygen2 的 R 包中有两个不同的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57770755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com