Хенрик Бенгтссон предоставил интернету прекрасный способ создания S3-генериков в R без необходимости беспокоиться о том, были ли они уже созданы до... в 2002 году.
Его функция setGenericsS3 делает следующее:
если да,
если нет, просто создает дженерик.
Этот код оказался очень полезным для автоматического создания дженериков, когда в ваших собственных пакетах их не было. Поскольку мы уже прошли эту эру R, мне стало интересно, как правильно сделать то же самое в R сейчас. Я не могу найти isS3Generic()
или подобную функцию в R, а код Хенрика Бенгтссона был написан задолго до введения обязательных пространств имен в R 2.14. Я помню, что видел другие способы добиться того же, но не могу их найти.
EDIT: Я специально ищу S3. Функция isGeneric()
работает только для S4, например для anova
(которая является S3 generic) :
> isGeneric('anova')
[1] FALSE
> anova
function (object, ...)
UseMethod("anova")