我有一个包含许多使用相同参数的函数的包,并且这些参数应该具有相同的文档。我当然可以使用@inheritParams,但是没有一个函数可以充当其他人可以继承的包中的“主”或“父”函数。我可以为此目的选择一些,但这将是任意的。有处理这种情况的最佳实践吗?
一种想法是拥有一个辅助函数,该函数不执行任何操作,但具有其他函数可以继承的许多参数的文档。我认为这意味着在此辅助函数上使用 @noRd 并让我的实际函数使用 @inheritParams 引用其 @param 定义,但正如在 this Github issues 中可以看到的,这不起作用,也不会受到支持。
我还看到过一些创造性的想法,比如使用动态 R 代码生成共享文档,但是上下文不同(项目描述,而不是参数),我不确定如何使用它。
长话短说,我想做 @inheritParams 的用途,但继承的概念相当人为和任意。您推荐什么最佳实践?
内联代码是当前的推荐。
他们的例子:
像往常一样,生成的文本与整个标签一起被解释为 markdown。这意味着你可以使用R动态编写markdown。例如,如果您在包中定义了此函数:
alphabet <- function(n) {
paste0("`", letters[1:n], "`", collapse = ", ")
}
然后你可以写:
#' Title
#'
#' @param x A string. Must be one of `r alphabet(5)`
foo <- function(x) NULL
结果相当于手写以下内容:
#' Title
#'
#' @param x A string. Must be one of `a`, `b`, `c`, `d`, `e`
foo <- function(x) NULL
这是减少重复的强大技术,因为您可以灵活地参数化函数,但最能满足您的需求。请注意,评估环境特意是您正在记录的包的子级,以便您可以调用内部函数。
请注意,他们还特别不再推荐一些东西:
本章最后向您展示如何更新我们不再推荐的被取代的重用机制:@includeRmd、@eval/@evalRd 和 @template。