Comece agoraComece grátis

Separe com keep() e discard()

Queremos dividir nossos resultados em dois grupos: os dias acima de 100 e os dias abaixo de 100. Vamos combinar keep() e discard() para isso.

Por que duas funções? Não poderíamos usar uma só? Não poderíamos criar um mapper chamado is_less_than_hundred?

Poderíamos, mas isso seria mais propenso a erros: é mais fácil alternar de keep() para discard() do que copiar e colar. Ao combinar as duas funções, precisamos de apenas um mapper. Isso significa que, se quisermos mudar o limite, vamos precisar fazer isso só uma vez, não duas, como teríamos de fazer se tivéssemos dois mappers.

Essa é uma regra que você deve buscar aplicar ao programar: escreva código de modo que, se precisar mudar algo, você tenha que mudar apenas uma vez.

all_visits ainda está disponível no seu workspace.

Este exercicio faz parte do curso

Programação Funcional Intermediária com purrr

Ver curso

Instruções do exercicio

  • Faça o mapeamento da função set_names() em all_visits para adicionar o nome dos dias: all_visits_named.
  • Crie um mapper chamado threshold que testa se .x é maior que 100.
  • Crie group_over mantendo os elementos que são maiores que 100.
  • Crie group_under descartando os elementos que são maiores que 100.

exercicio interativo prático

Tente este exercicio completando este código de exemplo.

# Set the name of each subvector
day <- c("mon", "tue", "wed", "thu", "fri", "sat", "sun")
all_visits_named <- ___(all_visits, ~ ___(.x, ___))

# Create a mapper that will test if .x is over 100 
threshold <- ___

# Run this mapper on the all_visits_named object: group_over
group_over <- ___(all_visits_named, ~ ___(.x, ___))

# Run this mapper on the all_visits_named object: group_under
group_under <-  ___(all_visits_named, ~ ___(.x, ___))
Editar e Executar Código