exemplos_de_aula/05-pipe.R

# Carregando pacotes ------------------------------------------------------

library(readr)

# Carregando os dados -----------------------------------------------------

base_de_dados <- read_csv2("dados/voos_de_janeiro.csv")

# Pipe (%>%) --------------------------------------------------------------

library(magrittr)

# |> 

# Caso não tenha instalado: install.packages("magrittr")

# Transforma funçõe aninhadas em funções
# sequenciais

# g(f(x)) = x %>% f() %>% g()

x %>% f() %>% g()   # CERTO
x %>% f(x) %>% g(x) # ERRADO

# Receita de bolo sem pipe. 
# Tente entender o que é preciso fazer.

filter(select(base_de_dados, origem, destino), origem == "EWR")

esfrie(
  asse(
    coloque(
      bata(
        acrescente(
          recipiente(
            rep(
              "farinha", 
              2
            ), 
            "água", "fermento", "leite", "óleo"
          ), 
          "farinha", até = "macio"
        ), 
        duração = "3min"
      ), 
      lugar = "forma", tipo = "grande", untada = TRUE
    ), 
    duração = "50min"
  ), 
  "geladeira", "20min"
)

# Veja como o código acima pode ser reescrito 
# utilizando-se o pipe. 
# Agora realmente se parece com uma receita de bolo.

recipiente(rep("farinha", 2), "água", "fermento", "leite", "óleo") %>%
  acrescente("farinha", até = "macio") %>%
  bata(duração = "3min") %>%
  coloque(lugar = "forma", tipo = "grande", untada = TRUE) %>%
  asse(duração = "50min") %>%
  esfrie("geladeira", "20min")

# ATALHO DO %>%: CTRL (command) + SHIFT + M

base_de_dados %>% 
  select(origem, destino) %>% 
  filter(origem == "EWR") %>% 
  head()

# Exercício ---------------------------------------------------------------

# 1. Reescreva o código abaixo utilizando o pipe. Na sua opinião, 
# de que forma é mais facil de ler e entender o que está sendo executado?
# Com ou sem o pipe? 

round(mean(base_de_dados$atraso_chegada, na.rm = TRUE), 2)

mean(base_de_dados$atraso_chegada, na.rm = TRUE) %>% 
  round(2)

base_de_dados$atraso_chegada %>% 
  mean(na.rm = TRUE) %>% 
  round(2)

# resolucoes:
mean(base_de_dados$atraso_chegada, na.rm = TRUE)  %>% 
  round(2)
curso-r/202202-intro-programacao documentation built on April 6, 2022, 10:13 p.m.