У меня есть метод (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... Есть ли более "простой" или "чистый" способ сделать это?Спасибо