# 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)