可能重复:
How to properly document S4 class slots using Roxygen2
我想使用R Studio和S4 classes
构建一个包含roxygen2
的包。
当我向我的包中引入了几个roxygen2
时,我已经使用S4 classes
语法记录了我的所有函数。
现在我意识到没有'@slot'功能开箱即用。所以我想知道如何让我的所有文档都能用于其他功能,并像this thread中建议的那样手动记录S4 classes
?
或者换句话说,您建议使用哪个工作流程来构建包含旧学校功能和S4 classes
的包?
roxygenize
然后再添加信息?这仍然会导致覆盖类的手动生成的.Rd文件......
答案 0 :(得分:4)
roxygen的第一个版本有一个@slot
标记,但该版本不再支持roxygen2
。因此建议不要使用旧版本。
就目前而言,roxygen2
并没有真正支持S4类。哈德利正努力在roxygen3
(https://github.com/hadley/roxygen3)中实现这一目标。如果您想尝试一下并感到勇敢:从github安装roxygen3
并尝试开发版本。请注意,此版本最终会被合并到roxygen2
中,因此问题会及时解决。
我个人总是发现使用roxygen和手动编写的.Rd文件进行组合是一个坏主意。但是如果必须,可以使用参数roxygen.dir
将roxygen的输出发送到不同的目录。这样,您可以将您想要的任何内容复制回包目录,而不会覆盖手动编写的文件。
roxygenise("./mypackage", roxygen.dir="./myroxygendir")
我要做的是,只需使用roxygen2
为您的类编写Rd文件,如链接到的主题中所述。您不必手动添加它们,就像您认为某些未知原因一样。您只需使用#'
像往常一样指示Rd块,并使用您链接到的线程中给出的任何内容。如果您想将广告位设为单独的版块,则可以使用@section
标记执行此操作,如下例所示。
使用roxygen2
:
#' The MY class
#'
#' This class blabla yadayada
#'
#'@section Slots:
#' \describe{
#' \item{\code{aslot}:}{Object of class \code{"numeric"}, containing
#'whatever and a bit more}
#' \item{\code{anotherslot}:}{Object of class \code{"character"}, containing
#' strings.}
#' }
#'
#' @note Yes, you can add notes
#' @name MY
#' @rdname MY
#' @aliases MY-class
#' @exportClass MY
#' @author Joris Meys
setClass("MY",
representation=representation(aslot="numeric",
anotherslot="character"
)