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