CommencerCommencez gratuitement

Séparer avec keep() et discard()

Nous voulons scinder nos résultats en deux groupes : les jours au-dessus de 100 et les jours en dessous de 100. Nous allons combiner keep() et discard() pour y parvenir.

Pourquoi deux fonctions ? Ne pourrait-on pas n’en utiliser qu’une ? Ne pourrait-on pas créer un mapper appelé is_less_than_hundred ?

On pourrait, mais ce serait plus propice aux erreurs : il est plus simple de passer de keep() à discard() que de faire du copier-coller. En combinant les deux fonctions, nous n’avons besoin que d’un seul mapper. Cela signifie que si nous voulons changer le seuil, nous n’aurons à le faire qu’une seule fois, et non deux, comme ce serait le cas avec deux mappers.

C’est une règle que vous devriez vous efforcer d’appliquer en codant : écrivez votre code de sorte que si vous devez modifier un élément, vous n’ayez à le changer qu’une seule fois.

all_visits est toujours disponible dans votre espace de travail.

Cet exercice fait partie du cours

<cours>Programmation fonctionnelle intermédiaire avec purrr</cours>
Voir le cours

Instructions de l’exercice

  • Appliquez la fonction set_names() à all_visits pour ajouter les noms des jours : all_visits_named.
  • Créez un mapper appelé threshold qui testera si .x est supérieur à 100.
  • Créez group_over en conservant les éléments supérieurs à 100.
  • Créez group_under en écartant les éléments supérieurs à 100.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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, ___))
Modifier et exécuter le code