重复使用文档
roxygen2提供了几种避免在代码中重复的方法文档,同时将多个位置的信息组合到一个位置文档文件:
本章最后向您展示了如何更新被取代的重用我们不再推荐的机制:@包括Rmd
,@评估
/@评估Rd
、和@模板
.
同一主题中的多个函数
您可以使用以下任一方法在同一文件中记录多个函数@rdname名称
或@describeIn中的描述
标签。这是一种技巧最好小心使用:在一个地方记录过多的功能让人困惑。当所有功能都相同(或非常相似)时使用论据。
@rdname名称
使用@rdname<目的地>
包括多个功能。标签(例如@标题
,@描述
,@示例
)将合并,跨越块,但这通常会产生难以理解的文本。所以我们建议您制作一个包含标题的块,描述、通用参数、示例等,然后仅在其他块中记录各个参数。
有两种基本方法可以做到这一点。您可以创建一个独立的文档块,然后向其中添加函数。这通常是当您有一系列相关的函数并且希望从其他功能(即三角(trig)
在中示例如下)。
#'三角近似
#'@param x输入,弧度。
#'@name三角
无效的
#>空
#'@rdname三角
#“@导出
正弦_ish<- 功能(x) x个-x个^三 / 6
#'@rdname三角
#“@导出
cos_ish(_)<- 功能(x)1 -x个^2 / 2
#'@rdname三角
#“@导出
tan_ish(_I)<- 功能(x) x个+x个^三 / 三
或者,您可以将文档添加到现有函数中。这倾向于如果你有一个带有一些变体的“主”函数或一些助手。
#“对数
#'
#'@param x数字向量
#“@导出
日志<- 功能(x,基础)。。。
#'@rdname日志
#“@导出
日志2<- 功能(x)日志(x,2)
#'@rdname日志
#“@导出
自然对数<- 功能(x)日志(x,经验(1))
@describeIn(描述)
替代@rdname名称
是@describeIn中的描述
.它的语法略有不同,因为除了主题名之外还提供功能的简要描述,如@主题描述一句话描述
.主要之间的差异@rdname名称
和@描述输入
,是那个@describeIn中的描述
创建包含项目符号列出了每个函数的所有内容及其描述。它使用确定本节标题的许多启发式方法,根据您记录的相关函数、方法泛型,或类的方法。
一般来说,我不再建议@describeIn中的描述
因为我不要认为它使用的启发式方法和深思熟虑的方法一样好手工制作的摘要。如果您当前正在使用@describeIn中的描述
,您可以将其替换为@rdname名称
,只要你考虑一下多功能@描述
.
包含的顺序
默认情况下,oxygen块按其处理顺序进行处理出现在文件中。当您合并多个文件时,这可以有时会导致函数用法出现次优顺序。你可以用覆盖默认顺序@订单
例如,下面的方块将放置次
第一名算术。道路
因为1在2之前。
#'@rdname算术
#“@订单2
添加<- 功能(x,y)x+年
#'@rdname算术
#“@订单1”
次<- 功能(x,y)x*年
内联代码
要插入内联代码,请将其包含在`第页`
Roxygen将将反勾号中的其余文本解释为R代码并进行评估并用其值替换反勾号表达式。这里有一个简单的例子:
#'标题`r 1+1`
#'
#'说明`r 2+2`
foo公司<- 功能()无效的
这相当于写:
#'标题2
#'
#'说明4
foo公司<- 功能()无效的
结果文本以及整个标记被解释为像往常一样降价。这意味着您可以使用R动态写入降价。例如,如果您在包中定义了此函数:
字母表<- 功能(n){
粘贴0("`",个字母[1:n] ,"`",坍塌= ", ")
}
然后你可以写:
#'标题
#'
#'@param x字符串。必须是'r字母表(5)之一`
foo公司<- 功能(x)无效的
结果相当于手写以下内容:
#'标题
#'
#'@param x字符串。必须是`A`、`b`、`c`、`d`、`e之一`
foo公司<- 功能(x)无效的
这是一种减少重复的强大技术,因为您可以灵活地对函数进行参数化,无论它如何满足您的需求。注释评估环境故意是包的子包您正在记录以便调用内部函数。
子文档
你可以使用相同的.房间
或.md文件
文件在文档中,自述。房间
,以及使用子文档:
```{r child=“common.Rmd”}```
包含的Rmd文件可以具有与其他帮助主题。例如。[roxygen2::roxygenize()]
将链接到的手册页使……充满活力
氧的作用2。请参阅渐晕(“rd-formatting”)
了解详细信息。
如果Rmd文件包含指向其他帮助的oxygen(Markdown-style)链接主题,然后需要一些注意,因为这些链接在Rmd中不起作用默认情况下为个文件。解决方法是为指定外部HTML链接他们。这些外部位置将不用于手册它总是链接到手册中的帮助主题。例子:
另请参阅[roxygen2::roxygenize()]函数。[roxygen2::roxygenize()]:https://roxygen2.r-lib.org/reference/roxygenize.html
此示例将链接到HTML/Markdown文件中提供的URL它将链接到使……充满活力
中的帮助主题手册。
请注意,如果您添加像这样的外部链接目标,那么roxygen将发出有关这些链接引用被定义为多个的警告时间(一次是外部的,一次是帮助主题)。此警告源于潘多克,无害。
已被取代
多年来,我们尝试了许多其他方法来减少文档文件之间的重复。现在有很多这样的被取代,我们建议将其更改为使用这些技术如上所述:
内联R标记只能在标记内生成标记文本,因此原则上它不如@评估
/@评估Rd
/@模板
然而,我们的经验表明,一次生成多个标签往往变得相当僵化,最终往往会将其重构为较小的所以我们不认为这反映了功能。