当多个参数匹配时,如何在单个参数上使用@inheritParams?

sta*_*ent 14 r devtools roxygen2

我希望记录一个R函数,并在多个参数名称匹配时从其他函数继承单个参数文档.例如,假设我有以下2个功能.

#' Function 1.
#' 
#' Description of function 1.
#' 
#' @param x XYZ
#' @param y ZYX
#' @return Numeric
fun1 <- function(x, y) {value <- 1}

#' Function 2.
#' 
#' Description of function 2.
#' 
#' @param x ABC
#' @param y CBA
#' @return Numeric
fun2 <- function(x, y) {value <- 2}
Run Code Online (Sandbox Code Playgroud)

我现在想要创建第三个函数,它继承fun1的参数x和fun2的参数y.以下不起作用:

#' Function 3.
#'
#' Description of function 3.
#'
#' @inherit fun1 params x
#' @inherit fun2 params y
fun3 <- function(x, y) {value <- 3}

#' Function 3.
#'
#' Description of function 3.
#'
#' @inheritParams fun1 x
#' @inheritParams fun2 y
fun3 <- function(x, y) {value <- 3}
Run Code Online (Sandbox Code Playgroud)

如果您执行以下操作,则两个参数都从fun1继承:

#' Function 3.
#'
#' Description of function 3.
#'
#' @inheritParams fun1
#' @inheritParams fun2
fun3 <- function(x, y) {value <- 3}
Run Code Online (Sandbox Code Playgroud)

我不确定还有什么可以尝试,或者甚至可能?

Ale*_*xis 10

您也可以使用roxygen2参数模板:

  • 创建一个名为man-roxygen.
  • .Rbuildignore通过附加一行将其添加到^man-roxygen.
  • 在该文件夹中,您可以使用文档片段创建 R 文件。例如,假设您有一个x-arg.R包含以下内容的文件:
    • #' @param x My x parameter.
  • 在所有要使用相同的文件片段的功能,写@template x-arg的不是@param bla bla
  • 利润。

编辑:此外,@param如果适合您的用例,每个模板可以有多个条目。

我相信这几乎适用于您想要重复的任何类型的文档,尽管有些情况需要特殊处理。例如,如果您想要一个模板,其中一些文本应该放在特定部分(例如“详细信息”)下,R 模板文件中的代码段也必须具有相应的指令,然后要使用它,您可能需要如果您有其他特定文本,请重复该指令:

details-template.R

#' @details
#'
#' Text that should appear everywhere
Run Code Online (Sandbox Code Playgroud)

使用它

#' @details
#'
#' Some specific text.
#'
#' @template details-template
Run Code Online (Sandbox Code Playgroud)

  • 显然,现在执行此操作的首选方法是“@eval”,而不是创建“man-roxygen”目录并使用“@template”https://github.com/r-lib/usethis/issues/1617#issuecomment-1085204078 (2认同)