FYI, похоже, у этого вопроса уже есть LISP equivalent.Включение обычной функции R S3 в общий
Недавно я хотел создать расширение dataframe для базовой функции R setdiff
и думал, что общий будет приятным. Следующие работы, но неуклюжие:
#' @export setdiff.default
setdiff.default <- setdiff
#' @export
setdiff <- function(x, ...) {
UseMethod("setdiff")
}
#' @export
setdiff.data.frame <- function(A, B) {
A[!duplicated(rbind(B, A))[nrow(B) + 1:nrow(A)], ]
}
При загрузке пакета базовая функция маскируется. Если я пишу дополнительную документацию для новой функции, создается другой файл .Rd и конкурирует с исходной базой R (R запрашивает, какой из них вы хотите, когда вы запустите ?setdiff
).
Есть ли чистый способ сделать это?
Я не вижу проблемы. Я считаю это «хорошей вещью», когда в справочном индексе отображаются страницы справки скрытой функции. Вы смотрели ваши варианты под '? SetMethod'? –
Да, возможно, я прошу слишком много. Я надеялся на способ «объединить» базовый метод с новым родовым. –