使用包含S4类的软件包推荐的软件包构建工作流程是什么?

时间:2012-11-30 09:15:00

标签: r rstudio s4 roxygen2

  

可能重复:
  How to properly document S4 class slots using Roxygen2

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

现在我意识到没有'@slot'功能开箱即用。所以我想知道如何让我的所有文档都能用于其他功能,并像this thread中建议的那样手动记录S4 classes

或者换句话说,您建议使用哪个工作流程来构建包含旧学校功能和S4 classes的包?

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

1 个答案:

答案 0 :(得分:4)

关于roxygen和S4类的一般信息

roxygen的第一个版本有一个@slot标记,但该版本不再支持roxygen2。因此建议不要使用旧版本。

就目前而言,roxygen2并没有真正支持S4类。哈德利正努力在roxygen3https://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"
                                       )