R:强制使用方法

时间:2018-06-12 16:49:40

标签: r class amazon-s3 methods

我有一个方法(stuff)用于“aov”对象。但是,我想对“anova”对象使用相同的方法,但不需要复制粘贴这两个函数。换句话说,我想在stuff.aov对象上强制使用anova

我尝试更改对象的类并运行该方法,但它似乎不起作用。

可重复的例子:

library(broom)

stuff <- function(x) {
  UseMethod("stuff")
}

stuff.aov <- function(x){
  broom::tidy(x)
}
stuff.anova <- function(x){
  class(x) <- "aov"
  stuff(x)
}

x1 <- aov(iris$Sepal.Length ~ iris$Petal.Length)
x2 <- anova(lm(iris$Sepal.Length ~ iris$Petal.Length))
stuff(x1)
stuff(x2)

我发现使用它可以在可重现的例子中使用:

library(broom)

stuff <- function(x) {
  UseMethod("stuff")
}

stuff.aov <- function(x){
  broom::tidy(x)
}
stuff.anova <- function(x){
  class(x) <- "aov"
  stuff(x)
}

x1 <- aov(iris$Sepal.Length ~ iris$Petal.Length)
x2 <- anova(lm(iris$Sepal.Length ~ iris$Petal.Length))
stuff(x1)
stuff(x2)

但它没有通过CRAN检查和Roxygen的文档构建......是否有更“简单”或“干净”的方式来做到这一点?感谢

0 个答案:

没有答案