Qual é o meu tipo?
Você acabou de ver quatro funções que ajudam a determinar com que tipo de variável você está trabalhando. class() (docs) e typeof() (docs) são importantes e serão úteis com frequência. mode() (docs) e storage.mode() (docs) existem principalmente por compatibilidade com a linguagem S.
Neste exercício, você vai observar o que essas funções retornam para diferentes tipos de variável. Há alguns tipos mais raros com os quais você talvez ainda não tenha se deparado.
array(docs): Generalização de uma matriz com um número arbitrário de dimensões.formula(docs): Usada por funções de modelagem e de plotagem para definir relações entre variáveis.
Observe também que existem três tipos de funções em R.
- A maioria das funções com que você se depara são
closures. - Algumas funções importantes, como
length()(docs), são conhecidas como funçõesbuiltin, que usam um mecanismo especial de avaliação para ficarem mais rápidas. - Construções de linguagem, como
if(docs) ewhile(docs), também são funções! Elas são chamadas de funçõesspecial.
Este exercicio faz parte do curso
Programação Orientada a Objetos com S3 e R6 em R
Instruções do exercicio
A função type_info() foi predefinida no seu ambiente para retornar o class(), mode(), typeof() e storage.mode() de sua entrada. (Digite type_info no console para ver como ela funciona.)
- Crie
some_vars, a lista de objetos de exemplo fornecida no editor. - Use
lapplypara iterar sobre os elementos desome_vars, chamandotype_info()em cada um dos objetos de exemplo para explorar seus tipos.
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
# Look at the definition of type_info()
type_info
# Create list of example variables
some_vars <- list(
an_integer_vector = rpois(24, lambda = 5),
a_numeric_vector = rbeta(24, shape1 = 1, shape2 = 1),
an_integer_array = array(rbinom(24, size = 8, prob = 0.5), dim = c(2, 3, 4)),
a_numeric_array = array(rweibull(24, shape = 1, scale = 1), dim = c(2, 3, 4)),
a_data_frame = data.frame(int = rgeom(24, prob = 0.5), num = runif(24)),
a_factor = factor(month.abb),
a_formula = y ~ x,
a_closure_function = mean,
a_builtin_function = length,
a_special_function = `if`
)
# Loop over some_vars calling type_info() on each element to explore them
___