对于使用roxygen(2)记录类,指定标题和描述/详细信息似乎与函数、方法、数据等相同。但是,插槽和继承是它们自己的类型。在roxygen2中记录S4课程的最佳实践是什么(当前的或计划的)
尽职调查:
我在早期对roxygen的描述中发现了一个@slot标签。
2008年R-forge邮件列表帖子
似乎表明这已经死了,
roxygen中不支持@slot:
roxygen2是真的吗?前面提到的帖子建议用户使用LaTeX标记创建自己的项目列表。例如,扩展“character”类的新S4类将按如下方式编码和记录:
#”扩展\code{“character”}类的S4类的标题。
#'
#“关于这门课的一些细节和我在正文中的计划。
#'
#“\描述{
#'\item{myslot1}{对某事物进行逻辑跟踪。}
#'
#'\item{myslot2}{指定其他内容的整数。}
#'
#'\item{myslot3}{保存某些数据的data.frame.}
#' }
#“@name mynewclass类”
#'@rdname mynewclass类
#“@exportClass mynewclass
setClass(“mynewclass”,
表示(myslot1=“logical”,
myslot2=“整数”,
myslot3=“data.frame”),
contains=“character”
)
然而,尽管这样做是可行的,但是用于记录插槽的\description,\item方法似乎与roxygen(2)的其余部分不一致,因为没有@-分隔的标记,插槽可能会在没有roxygenize()反对的情况下未记录。它也没有提到用一致的方式来记录所定义类的继承。我认为使用@import标记,依赖关系通常仍然可以正常工作(如果特定插槽需要来自另一个包的非基类)
那么,总结一下,目前roxygen(2)插槽的最佳实践是什么
现在似乎有三种选择:
- A——逐项列表(如上例)
- B–
@slot。。。但是我错过了额外的标签/实现。我无法让@slot在其中的版本中与roxygen/roxygen2一起工作
在示例中,它是作为分项列表的替换项包含的
在上面同样,上面的例子也适用于roxygen(2)- C——一些用于指定插槽的替代标记,如
@param,可以完成相同的任务
我借用/扩展了我在github上的roxygen2开发页面上的一篇帖子中的这个问题
Roxygen2 5.0.1的更新答案,自6.0.1起生效
对于S4,现在的最佳实践是使用@slot标记记录:
#”扩展\code{“character”}类的S4类的标题。
#'
#“关于这门课的一些细节和我在正文中的计划。
#'
#“@slot myslot1是一种逻辑跟踪。
#“@slot myslot2是一个指定其他内容的整数。
#“@slot myslot3是一个包含一些数据的data.frame。
#'
#“@name mynewclass类”
#'@rdname mynewclass类
#“@出口
另一方面,@exportClass仅在某些情况下是必需的,导出函数的一般方法是现在使用@export。您也不必导出类,除非您希望其他包能够扩展该类
另见http://r-pkgs.had.co.nz/namespace.html#exports
更新了Roygen2 3.0.0的答案,自5.0.1起生效。
对于S4,最佳实践是以下形式的文档:
#'\section{Slots}{
#“\描述{
#'\item{\code{a}:}{class对象\code{“numeric”}.}
#'\item{\code{b}:}{class对象\code{“character”}.}
#' }
#' }
这与插槽作为对象内部列表的内部表示一致。正如您所指出的,这种语法与其他行不同,我们可能希望将来能有一个更健壮的解决方案,其中包含继承知识,但现在还不存在这种解决方案
正如@Brian Diggs所指出的,这个特性被引入了3.0.0,在https://github.com/klutometis/roxygen/pull/85