对于使用roxygen(2)文档化类,指定标题和描述/细节似乎与函数、方法、数据等相同。然而,插槽和继承是它们自己的动物。当前或计划中,文档化roxygen2中的S4类的最佳实践是什么?
尽职调查:
我在早期的roxygen描述中找到了一个@slot标签的提及。 2008年的R-forge邮件列表帖子 似乎表明这已经过时, 并且在roxygen中没有对@slot的支持:
这是否适用于roxygen2?前面提到的帖子建议用户改为使用带有LaTeX标记的自己的项目列表。例如,一个新的扩展"character"类的S4类将被编码和记录如下:
#' 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
...但我错过了额外的标记/实现。我无法在包括作为替换上述示例中项目化列表的版本的roxygen / roxygen2中使用@slot。同样,上面的示例可以在roxygen(2)中正常工作。- C -- 指定插槽的某些替代标记,例如
@param
,可以实现相同的功能。
我从我在github上发布的roxygen2
开发页面中借用/扩展了这个问题。
setClass
语句比setMethod
要少得多。一旦实现了@slot
,进行更改就不会太痛苦。 - Paul 'Joey' McMurdie