Nettoyez vos données avec keep
Depuis le début de ce cours, nous utilisons les résultats d’un test A/B d’une semaine.
Nous avons placé ces résultats dans une liste appelée all_visits. Cette liste contient visit_a, visit_b et visit_c. Ces vecteurs ne sont pas nommés. Ils contiennent chacun sept nombres, un par jour de la semaine.
La première question que nous voulons poser est : quels jours ont dépassé 100 visites par heure en moyenne ? Nous allons utiliser la fonction keep(). Mais la réponse ne serait pas lisible avec un vecteur non nommé : vous auriez les nombres, sans savoir à quel jour ils correspondent.
La bonne nouvelle : vous pouvez utiliser la fonction set_names() pour résoudre ce problème. C’est ce que nous allons faire dans ce chapitre : d’abord, utiliser keep() sur des vecteurs non nommés, puis sur des vecteurs nommés.
Cet exercice fait partie du cours
<cours>Programmation fonctionnelle intermédiaire avec purrr</cours>Instructions de l’exercice
- Créez un mapper qui teste si
.xest supérieur à 100. Vous l’utiliserez deux fois. - Combinez ce mapper avec
keep()et appliquez‑le à la liste non nomméeall_visit. Comme le résultat est non nommé, vous ne savez pas quels jours ont été conservés. - Nommez chaque vecteur en combinant
map()etset_names(), à l’aide du vecteur de noms fourni. - Appliquez le mapper précédemment créé à la nouvelle liste nommée. Comme vous pouvez le voir, c’est maintenant plus lisible !
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Create a mapper that test if .x is more than 100
is_more_than_hundred <- ___(~ .x > 100)
# Use this mapper with keep() on the all_visits object
map(all_visits, ~ ___(.x, is_more_than_hundred))
# Use the day vector to set names to all_list
day <- c("mon", "tue", "wed", "thu", "fri", "sat", "sun")
full_visits_named <- map(all_visits, ~ ___(.x, ___))
# Use this mapper with keep()
map(full_visits_named, ~ ___(.x, ___))