O que há em um nome?
S3 usa uma convenção de nomenclatura rígida: todos os métodos S3 têm um nome no formato generic.class.
A recíproca não é verdadeira: uma função pode ter um nome com ponto sem ser um método S3. É o caso de muitas funções que existem desde os primeiros dias da linguagem S. Por exemplo, all.equal() (docs) é, na verdade, um genérico S3, não um método. (Esse é um exemplo de como leopard.case pode ser confuso.)
Você pode verificar se uma função é um genérico S3 chamando is_s3_generic() (docs) do pacote pryr. Você também pode imprimí-la (digitando seu nome no console) e então verificar se ela chama UseMethod().
Da mesma forma, você pode verificar se uma função é um método S3 chamando is_s3_method() (docs) do pryr. Por exemplo,
library(pryr)
is_s3_generic("t") # função genérica de transposição
is_s3_method("t.data.frame") # método de transposição para data.frames
is_s3_method("t.test") # uma função para testes t de Student
Quais afirmações são verdadeiras?
is.complex()(docs) é um método do genéricoisque atua em objetoscomplex.seq.Date()(docs) é um método do genéricoseqque atua em objetosDate.is.na.data.frame()(docs) é um método do genéricois.naque atua em objetosdata.frame.sort()(docs) é uma função genérica.order()(docs) é uma função genérica.
Este exercicio faz parte do curso
Programação Orientada a Objetos com S3 e R6 em R
exercicio interativo prático
Transforme teoria em prática com um dos nossos exercicio interativos
Iniciar exercicio