Хенрик Бенгтссон предоставил Интернету хороший способ создания S3-дженериков в R , не беспокоясь о том, были ли они созданы ранее ... в 2002 году.
Какова его функция?setGenericsS3 делает, в основном:
- проверить, правильно ли имя
- проверить, есть ли функция с таким именем
, если так,
- проверьте, является ли он универсальным
- , если это не так, переименуйте его в .default и создайте универсальный
, если нет, просто создайте универсальный.
Этот код оказался очень полезным для автоматического создания дженериков, когда их не было в ваших собственных пакетах.Поскольку мы довольно далеко миновали эту эпоху R, мне было интересно, как правильно достичь того же самого в R сейчас.Я не могу найти isS3Generic()
или подобную функцию в R, и код Хенрика Бенгтссона берет свое начало задолго до обязательных пространств имен, представленных в R 2.14.Я помню, что видел другие способы достижения того же самого, но не могу их найти.
РЕДАКТИРОВАТЬ: Я специально ищу S3.Функция isGeneric()
работает только для S4, например, для anova
(который является общим для S3):
> isGeneric('anova')
[1] FALSE
> anova
function (object, ...)
UseMethod("anova")
<bytecode: 0x04dc7a18>
<environment: namespace:stats>