r generics r-s3

Creación segura de S3 Generics en R



r-s3 (0)

Henrik Bengtsson ha proporcionado a Internet una buena forma de crear genéricos S3 en R sin tener que preocuparse de si ya se crearon antes ... en 2002.

Lo que hace su función setGenericsS3, es básicamente:

  • verifica si el nombre está bien
  • verifica si hay una función con ese nombre

si es así,

  • verifica si es un genérico
  • en caso de que no lo sea, renómbrelo como .default y cree un genérico

Si no, simplemente crea el genérico.

Este código resultó muy útil para crear genéricos automáticamente cuando no había ninguno disponible en sus propios paquetes. A medida que pasamos bastante más allá de esta era R, me preguntaba cuál es la forma correcta de lograr lo mismo en R ahora. No puedo encontrar una función isS3Generic() o similar en R, y el código de Henrik Bengtsson se origina desde mucho antes de los espacios de nombres obligatorios como se introdujo en R 2.14. Recuerdo que he visto otras formas de lograr lo mismo, pero no puedo localizarlas.

EDIT: estoy buscando específicamente para S3. La función isGeneric() solo funciona para S4, por ejemplo para anova (que es un genérico de S3):

> isGeneric(''anova'') [1] FALSE > anova function (object, ...) UseMethod("anova") <bytecode: 0x04dc7a18> <environment: namespace:stats>