В R у меня есть класс S3, который эмулирует одномерный вектор, поэтому я хочу реализовать пользовательские версии mean
, sum
, max
и т. д. Допустим, это выглядит так:
my_class = function(){
structure(list(), class='my_class')
}
Все вышеперечисленные методы работают нормально, если я определяю mean.my_class
и т. д.:
mean.my_class = function(x){
2
}
mean(my_class())
Однако я также хотел бы сделать это для таких функций, как var
, который не является универсальным методом. Если я создам такую функцию, а затем вызову var
для экземпляра моего класса:
var.my_class = function(his){
# Do stuff here
}
var(my_class())
Я получаю сообщение об ошибке:
Error in var(my_class()) : is.atomic(x) is not TRUE
Это потому, что универсальной функции var
нет, и она просто вызывает stats::var
в моей структуре. Как тогда я могу предоставить пользовательскую реализацию, если нет универсального метода? Я также не хочу нарушать метод var
для обычных векторов.
var
, должен ли я определить общую функцию с тем же именем или с другим именем? - person Migwell   schedule 26.03.2021