Подтвердить что ты не робот

Безопасное создание S3-дженериков в R

Хенрик Бенгтссон предоставил интернет с хорошим способом создание генерических файлов 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>
4b9b3361

Ответ 1

Вам может показаться полезным изучить пакет R.oo