对于使用 roxygen(2) 记录类,指定标题和描述/细节似乎与函数、方法、数据等相同。但是,槽和继承是它们自己的一种动物。在 roxygen2 中记录 S4 类的最佳实践是什么(当前的或计划的)?
尽职调查:
我发现@slot在 roxygen 的早期描述中提到了一个标签。 一个 2008 R-forge 邮件列表帖子 似乎表明这已经死了,并且@slot在 roxygen 中不支持:
@slot
roxygen2 是这样吗?前面提到的帖子建议用户应该使用 LaTeX 标记制作自己的逐项列表。例如,扩展该类的新 S4 类"character"将被编码和记录如下:
"character"
#' The title for my S4 class that extends \code{"character"} class. #' #' Some details about this class and my plans for it in the body. #' #' \describe{ #' \item{myslot1}{A logical keeping track of something.} #' #' \item{myslot2}{An integer specifying something else.} #' #' \item{myslot3}{A data.frame holding some data.} #' } #' @name mynewclass-class #' @rdname mynewclass-class #' @exportClass mynewclass setClass("mynewclass", representation(myslot1="logical", myslot2="integer", myslot3="data.frame"), contains = "character" )
然而,尽管这可行,但这种记录插槽\describe的\item方法似乎与 roxygen(2) 的其余部分不一致,因为没有- 分隔的@标签,并且插槽可能会在roxygenize(). 它也没有说明记录正在定义的类的继承的一致方式。@import我想依赖通常仍然可以使用标签正常工作(如果特定插槽需要来自另一个包的非基类) 。
\describe
\item
@
roxygenize()
@import
那么,总而言之,roxygen(2) 插槽的当前最佳实践是什么?
目前似乎有三个选项需要考虑:
A – 分项清单(如上例)。 B - @slot…但我错过了额外的标签/实现。我无法让@slot 与 roxygen / roxygen2 在上面示例中作为逐项列表的替代品的版本中使用。同样,上面的示例确实适用于 roxygen(2)。 C - 一些用于指定插槽的替代标签,例如@param,可以完成同样的事情。
@param
我正在从我在githubroxygen2上的开发页面上发表的帖子中借用/扩展这个问题。
roxygen2
http://r-pkgs.had.co.nz/man.html#man- classes
我还没有为 RC 尝试过它,但它现在对我来说适用于 S4。
看起来 Roxygen2 3.0+ 版完全支持 S4 类插槽:
http://blog.rstudio.org/2013/12/09/roxygen2-3-0-0/
“使用 roxygen2 记录您的 S4 类、S4 方法和 RC 类——您可以安全地删除使用@alias和的变通办法@usage,并简单地依靠 roxygen2 来做正确的事情。”
@alias
@usage