EmpezarEmpieza gratis

Crear un método S3 (2)

Si no se encuentra un método adecuado para un genérico, se lanza un error. Por ejemplo, ahora mismo get_n_elements() solo tiene un método disponible para data.frame. Si pasas una matriz a get_n_elements() en su lugar, verás un error.

> get_n_elements(matrix())
Error: no applicable method for 'get_n_elements' applied to an object of class "c('matrix', 'array', 'logical')"

En lugar de tener que escribir decenas de métodos para cada tipo de entrada, puedes crear un método que gestione todos los tipos que no tienen un método específico. A esto se le llama el método por defecto; siempre tiene el nombre generic.default. Por ejemplo, print.default() (docs) imprimirá cualquier tipo de objeto que no tenga su propio método print() (docs).

Este ejercicio forma parte del curso

Programación orientada a objetos con S3 y R6 en R

Ver curso

Instrucciones del ejercicio

La función genérica get_n_elements() y un método para data.frame ya están definidos en tu espacio de trabajo.

  • Usa ls.str() (docs) para explorar tu espacio de trabajo.
  • Escribe un método S3 por defecto para get_n_elements().
    • El nombre de la función debe ser el del genérico, luego un . y después default.
    • Los argumentos de entrada deben ser x y ....
    • El cuerpo de la función debe ser una sola línea que devuelva el número de elementos de un objeto arbitrario. Usa la misma técnica que en el ejercicio Make it Classy (1).
  • Llama a tu método sobre el conjunto de datos ability.cov (docs) y asigna el resultado a la variable n_elements_ability.cov.

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

# View predefined objects
___

# Create a default method for get_n_elements
___ <- ___




# Call the method on the ability.cov dataset
n_elements_ability.cov <- ___
Editar y ejecutar código