CommencezCommencez gratuitement

Scinder avec keep() et discard()

Nous voulons diviser 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 arriver.

Pourquoi deux fonctions? Ne pourrions‑nous pas n'en utiliser qu'une seule? Ne pourrions‑nous pas créer un mappeur nommé is_less_than_hundred?

Nous le pourrions, mais ce serait plus propice aux erreurs : il est plus simple de passer de keep() à discard() que de copier‑coller. En combinant les deux fonctions, nous n'avons besoin que d'un seul mappeur. Ainsi, 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 mappeurs.

C'est une règle que vous devriez chercher à appliquer lorsque vous programmez : écrivez votre code de façon à ce 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.

Cette activité fait partie du cours

Programmation fonctionnelle intermédiaire avec purrr

Voir le cours

Instructions de l’exercice

  • Appliquez la fonction set_names() à all_visits pour ajouter le nom des jours : all_visits_named.
  • Créez un mappeur nommé 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