使用roxygen2自动记录所有S4通用方法的文档

9
我正在编写一个软件包,使用进行文档编写。我在记录S4方法时遇到了一些问题。我已经定义了一个通用的方法(例如myGeneric),并且实现了几个方法。

问题:有没有一种自动记录所有通用方法的方法?

手动解决方案是为每种方法添加以下两行代码(这是我的虚拟示例中的第一个方法):

##' @rdname myGeneric-methods
##' @aliases myGeneric,numeric,numeric,missing-method

由于我使用了很多方法,因此我不得不添加很多内容来满足R CMD检查。


我在Hadley的《Advanced R》中读到关于文档化S4方法这里的内容,其中提到可以使用@genericMethods:

如果您想要自动列出为泛型实现的所有方法,请在泛型文档中使用@genericMethods。

我认为这在roxygen2中没有实现,或者是用另一个名称实现的。我找到的关于@genericMethods标签的唯一信息是在roxygen3 github 这里,但该信息已被停止(?)。


这只是一个虚拟的例子,我仅记录通用信息,并希望自动列出所有实现的方法:

##' @param object An object
##' @param data Numeric vector or data.frame
##' @param Fun Function. Default function is \code{sum}
##' @param ... Extra named arguments passed to FUN
##' @docType methods
##' @export 
setGeneric("myGeneric", function(object, data, FUN, ...)
           {standardGeneric ("myGeneric")} )

setMethod("myGeneric", c("numeric", "numeric", "missing"),
          function(object, data,...) { 
              myGeneric(object, data, sum,...) 
          })
setMethod("myGeneric", c("numeric", "data.frame", "missing"),
          function(object, data,...) { 
              myGeneric(object, as.vector(unlist(data), sum,...) 
          })
setMethod("myGeneric", c("numeric", "numeric", "function"),
          function(object, data, FUN,...) {
             ## Do something
          })

任何帮助都将不胜感激,
alex

1
我不知道有什么自动记录泛型方法的方法(也许在实现@genericMethods后会有)。相反,我在所有特定方法前面使用#' @describeIn myGeneric。这并不完全回答你的问题,但我认为这是目前实现它的唯一方法。 - jomuller
我在roxygen的官方GitHub存储库中搜索,没有找到任何可以完成这项工作的roclet。我认为完整的roclet列表在/roxygen/R/rocled-rd.R中。 - jomuller
我在 GitHub 上添加了一个问题。链接为:https://github.com/klutometis/roxygen/issues/264。 - jomuller
1个回答

9

编辑:已更新以反映roxygen2的最新版本的首选方法- 2016年3月23日

实际上,您可以通过在roxygen2中使用@rdname更轻松地完成此操作:

#' @param object An object
#' @param data Numeric vector or data.frame
#' @param Fun Function. Default function is \code{sum}
#' @param ... Extra named arguments passed to FUN
#' @rdname myGeneric
#' @export 
setGeneric("myGeneric", function(object, data, FUN, ...)
           {standardGeneric ("myGeneric")} )

#' @rdname myGeneric
setMethod("myGeneric", c("numeric", "numeric", "missing"),
          function(object, data,...) { 
              myGeneric(object, data, sum,...) 
          })

#' @rdname myGeneric
setMethod("myGeneric", c("numeric", "data.frame", "missing"),
          function(object, data,...) { 
              myGeneric(object, as.vector(unlist(data), sum,...) 
          })

#' @rdname myGeneric
setMethod("myGeneric", c("numeric", "numeric", "function"),
          function(object, data, FUN,...) {
             ## Do something
          })

对于我来说,使用roxygen2版本5.0.1,这个技巧非常有效。


1
我相信现在@describeIn需要提供一个第二个参数来描述,例如@describeIn myGeneric the method to do something different,参见https://cran.r-project.org/web/packages/roxygen2/vignettes/rd.html - cboettig
@cboettig 没错。现在你可以使用@rdname指向你想要添加额外方法的Rd文件。谢谢你告诉我,使我能够更新信息。 - Joris Meys

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接