我有一个方法(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的文档构建......是否有更“简单”或“干净”的方式来做到这一点?感谢