Comece agoraComece grátis

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ções builtin, que usam um mecanismo especial de avaliação para ficarem mais rápidas.
  • Construções de linguagem, como if (docs) e while (docs), também são funções! Elas são chamadas de funções special.

Este exercicio faz parte do curso

Programação Orientada a Objetos com S3 e R6 em R

Ver curso

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 lapply para iterar sobre os elementos de some_vars, chamando type_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
___
Editar e Executar Código