Roxygen 具有仅用于保存参数定义的函数

问题描述 投票:0回答:1

我有一个包含许多使用相同参数的函数的包,并且这些参数应该具有相同的文档。我当然可以使用@inheritParams,但是没有一个函数可以充当其他人可以继承的包中的“主”或“父”函数。我可以为此目的选择一些,但这将是任意的。有处理这种情况的最佳实践吗?

一种想法是拥有一个辅助函数,该函数不执行任何操作,但具有其他函数可以继承的许多参数的文档。我认为这意味着在此辅助函数上使用 @noRd 并让我的实际函数使用 @inheritParams 引用其 @param 定义,但正如在 this Github issues 中可以看到的,这不起作用,也不会受到支持。

我还看到过一些创造性的想法,比如使用动态 R 代码生成共享文档,但是上下文不同(项目描述,而不是参数),我不确定如何使用它。

长话短说,我想做 @inheritParams 的用途,但继承的概念相当人为和任意。您推荐什么最佳实践?

r inheritance r-package roxygen2
1个回答
0
投票

内联代码是当前的推荐。

他们的例子:

像往常一样,生成的文本与整个标签一起被解释为 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。

© www.soinside.com 2019 - 2024. All rights reserved.