Criando um método S3 (2)
Se nenhum método adequado for encontrado para um genérico, um erro é gerado. Por exemplo, no momento, get_n_elements() só tem um método disponível para data.frames. Se você passar uma matriz para get_n_elements(), verá um erro.
> get_n_elements(matrix())
Error: no applicable method for 'get_n_elements' applied to an object of class "c('matrix', 'array', 'logical')"
Em vez de escrever dezenas de métodos para cada tipo de entrada, você pode criar um método que trate todos os tipos que não têm um método específico. Isso é chamado de método default; ele sempre tem o nome generic.default. Por exemplo, print.default() (docs) imprimirá qualquer tipo de objeto que não tenha seu próprio método print() (docs).
Este exercicio faz parte do curso
Programação Orientada a Objetos com S3 e R6 em R
Instruções do exercicio
A função genérica get_n_elements() e um método para data.frames já foram definidos no seu ambiente de trabalho.
- Use
ls.str()(docs) para explorar seu ambiente. - Escreva um método S3 default para
get_n_elements().- O nome da função deve ser o nome do genérico, depois um
.e entãodefault. - Os argumentos de entrada devem ser
xe.... - O corpo da função deve ser uma única linha, retornando o número de elementos em um objeto arbitrário. Use a mesma técnica do jogo de xadrez no exercício Make it Classy (1).
- O nome da função deve ser o nome do genérico, depois um
- Chame seu método no conjunto de dados
ability.cov(docs) e atribua o resultado à variáveln_elements_ability.cov.
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
# View predefined objects
___
# Create a default method for get_n_elements
___ <- ___
# Call the method on the ability.cov dataset
n_elements_ability.cov <- ___