3

可能重复:
如何使用 Roxygen2 正确记录 S4 类插槽

我想构建一个包含S4 classes使用 R Studio 和roxygen2. roxygen2当我将几个函数引入S4 classes我的包时,我已经使用语法记录了我的所有函数。

现在我意识到没有开箱即用的“@slot”功能。所以我想知道我怎样才能让我的所有文档都为其他功能工作,并像这个线程S4 classes中建议的那样手动记录?

或者换句话说,您会推荐哪个工作流程来构建一个包含老式函数和S4 classes?

编辑:您是否建议将 R Studio 构建工具配置为不创建 .Rd 文件。roxygenize手动然后添加信息?这仍然会导致覆盖类的手动生成的 .Rd 文件......

4

1 回答 1

4

roxygen 和 S4 课程的一般信息

roxygen 的第一个版本有一个@slot标签,但该版本不再支持roxygen2. 所以建议不要使用那个旧版本。

至于现在,roxygen2对 S4 类没有真正的支持。Hadley 正在努力实现这一目标roxygen3https://github.com/hadley/roxygen3)。如果您想试一试并感到勇敢:roxygen3从 github 安装并尝试开发版本。请注意,此版本最终将合并到roxygen2中,因此问题会及时自行解决。

关于您的工作流程:

我个人总是觉得结合使用 roxygen 和手动编写的 .Rd 文件是个坏主意。但如果必须,您可以使用参数将 roxygen 的输出发送到不同的目录roxygen.dir。这样,您可以将所需的任何内容复制回包目录,而不会覆盖手动写入的文件。

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"
                                       )
于 2012-11-30T10:39:26.977 回答