小编典典

如何使用 Roxygen2 正确记录 S4 类插槽?

all

对于使用 roxygen(2) 记录类,指定标题和描述/细节似乎与函数、方法、数据等相同。但是,槽和继承是它们自己的一种动物。在 roxygen2 中记录
S4 类的最佳实践是什么(当前的或计划的)?

尽职调查:

我发现@slot在 roxygen 的早期描述中提到了一个标签。 一个 2008 R-forge
邮件列表帖子
似乎表明这已经死了,并且@slot在 roxygen 中不支持:

roxygen2 是这样吗?前面提到的帖子建议用户应该使用 LaTeX 标记制作自己的逐项列表。例如,扩展该类的新 S4
"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我想依赖通常仍然可以使用标签正常工作(如果特定插槽需要来自另一个包的非基类) 。

那么,总而言之,roxygen(2) 插槽的当前最佳实践是什么?

目前似乎有三个选项需要考虑:

  • A – 分项清单(如上例)。
  • B - @slot…但我错过了额外的标签/实现。我无法让@slot 与 roxygen / roxygen2
    在上面示例中作为逐项列表的替代品的版本中使用。同样,上面的示例确实适用于 roxygen(2)。
  • C - 一些用于指定插槽的替代标签,例如@param,可以完成同样的事情。

我正在从我在githubroxygen2上的开发页面上发表的帖子中借用/扩展这个问题。


阅读 63

收藏
2022-04-18

共1个答案

小编典典

roxygen2 v4.1+ 和 Hadley 的最新文档:

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 来做正确的事情。”

2022-04-18