Я пытаюсь переопределить функцию print.anova() из пакета статистики R в локальном пакете, который я использую при обучении. По сути, я хочу удалить печать заголовка и добавить «итоговую» строку без создания новой функции (например, ANOVA()) с новым классом.
Функция выглядит следующим образом:
print.anova <- function(x,digits=max(getOption("digits")-2,3),
signif.stars=getOption("show.signif.stars"),totalSS=TRUE,rm.heading=TRUE,...) {
if (!any(grepl("Res.Df",colnames(x)))) { # exclusion for multiple lm objects
if (!any(grepl("Levene",attr(x,"heading")))) { # exclusion for levenes.test
if (totalSS) { # add total SS row
x <- rbind(x,c(sum(x$Df),sum(x[,"Sum Sq"]),NA,NA,NA))
row.names(x)[dim(x)[1]] <- "Total"
}
}
}
if (rm.heading) attr(x,"heading") <- NULL # remove heading
stats::print.anova(x,digits=digits,signif.stars=signif.stars,...)
invisible(x)
}
Моя проблема в том, что я не уверен, следует ли экспортировать это как функцию, метод, метод S3, некоторую их комбинацию или что-то еще. Например, когда я пытаюсь сделать это (часть кода roxygenize):
#'@export
Я получаю следующее предупреждение при запуске проверки Rcmd:
S3 methods shown with full name in documentation object 'print.anova':
'print.anova'
но функция работает, как и ожидалось, когда я загружаю свой пакет.
Однако, если я попробую это:
#'@method print anova
#'@S3method print anova
Я не получаю никаких предупреждений или ошибок при проверке Rcmd, но когда я пытаюсь использовать функцию в R, она находит исходную функцию в пространстве имен пакета статистики. Кроме того, если я сделаю это
getAnywhere(print.anova)
я понимаю это
2 differing objects matching ‘print.anova’ were found in the following places
package:stats
registered S3 method for print from namespace stats
namespace:NCStats
namespace:stats
Наконец, для этой версии (без использования экспорта, но с использованием метода и метода S3) в моем пространстве имен, разработанном roxygen, есть следующий элемент.
S3method(print,anova)
Меня смущает то, что мне, кажется, удалось сделать что-то подобное с другими функциями (например, используя метод и версию S3method с print.summary.lm).
Я был бы признателен за любую помощь в моем понимании того, что я здесь делаю неправильно (или как я могу в конечном итоге достичь этой цели). Спасибо заранее за любую помощь.
p.s., для чего это стоит, я на Windows 7 (32-разрядная версия), R 2.15.2 и использую RStudio.