【问题标题】:Exporting an S3 Method for more than class (with multiple assignment)为多个类导出 S3 方法(具有多个分配)
【发布时间】:2014-12-11 06:42:03
【问题描述】:

我有一个包含 S3 泛型和几种方法的包。我使用相同的函数来处理多个类,因此我将相同的函数分配给多个名称。我遇到的具体问题是 roxygen2 没有意识到这两个变量都绑定到 S3 方法,并且在不包含 @S3method 指令的情况下,它无法导出某些 S3 方法。但是,这会导致弃用警告(“@S3method 已弃用。请改用@export”)

以下(人为的)小例子说明了这个问题:

#' The size of an object.
#' The size of an object
#' 
#' @export
size  <- function(x) UseMethod('size')

#' @export
size.default  <-  function(x) "I dunno" 

#' @export
#' @S3method size matrix
size.data.frame  <-  
size.matrix  <-  function(x) prod(dim(x))

#' @export
#' @S3method size character
size.factor  <-  
size.character  <-  function(x) length(x)

#' @export
#' @S3method size integer
size.double  <-  
size.integer  <-  function(x) sum(x)

如果不使用已弃用的 @S3method 指令,我无法找到导出矩阵、字符和整数方法的方法。有没有办法在不使用弃用指令的情况下导出这些方法?

谢谢!

【问题讨论】:

    标签: roxygen


    【解决方案1】:

    最简单的方法是使用两行代码:

    #' @export
    size.matrix  <-  function(x) prod(dim(x))
    #' @export
    size.data.frame  <-  size.matrix
    

    【讨论】:

    • 为什么@S3method 完全被弃用了,因为roxygen2 似乎不能总是正确地找到S3 方法?谢谢。
    • @RonJensen 如果您发现自动检测不起作用的情况,您应该提交错误。如果自动检测失败,您始终可以使用@method 来判断函数是 S3 方法。
    猜你喜欢
    • 2019-05-27
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    相关资源
    最近更新 更多