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>