使用roxygen2自动记录S4泛型的所有方法

alk*_*989 7 r s4 roxygen2

我正在使用为文档编写一个包.记录S4方法时遇到了一些麻烦.我已经定义了一个通用的方法(例如)和几个实现它的方法.myGeneric

问题:有没有办法自动记录泛型的所有方法?

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

##' @rdname myGeneric-methods
##' @aliases myGeneric,numeric,numeric,missing-method
Run Code Online (Sandbox Code Playgroud)

由于我使用了很多方法,我必须添加很多来满足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
          })
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感谢,

亚历克斯

Jor*_*eys 8

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

实际上,使用@rdnamein 可以更轻松地完成这项工作roxygen2:

#' @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
          })
Run Code Online (Sandbox Code Playgroud)

使用roxygen2版本5.0.1对我有用