How to use @inheritParams on single parameters when multiple parameters match?

痞子三分冷 提交于 2019-12-08 14:55:51

问题


I would like to document an R function and inherit individual parameter documentation from other functions when multiple parameter names match. For example, lets say I have the following 2 functions.

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

I now want to create a third function that inherits parameter x from fun1 and parameter y from fun2. The following do not work:

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

If you do the following then both parameters are inherited from fun1:

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

I'm not sure what else to try or if this is even possible?


回答1:


You can use roxygen2 templates for parameters too:

  • Create a folder called man-roxygen.
  • Add it to .Rbuildignore by appending a line with ^man-roxygen.
  • Inside that folder you can create R files with documentation snippets. For instance, let's say you have a file x-arg.R with:
    • #' @param x My x parameter.
  • In all the functions where you want to use the same documentation snippet, write @template x-arg instead of @param bla bla.
  • Profit.

EDIT: also, you can have more than one @param entry per template if it fits your use case.

I believe this works for pretty much any kind of documentation you want to repeat, though some cases require special handling. For example, if you wanted to have a template with some text that should go under a specific section (e.g. "Details"), the snippet in the R template file must also have the corresponding directive, and then to use it you might need to repeat the directive if you have additional specific text:

In details-template.R

#' @details
#'
#' Text that should appear everywhere

To use it

#' @details
#'
#' Some specific text.
#'
#' @template details-template


来源:https://stackoverflow.com/questions/47782004/how-to-use-inheritparams-on-single-parameters-when-multiple-parameters-match

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!