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>Instructions de l’exercice
- Appliquez la fonction
set_names()àall_visitspour ajouter les noms des jours :all_visits_named. - Créez un mapper appelé
thresholdqui testera si.xest supérieur à 100. - Créez
group_overen conservant les éléments supérieurs à 100. - Créez
group_underen é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, ___))