Simuler des données avec 3+ entrées grâce à pmap()
Et si vous deviez itérer sur trois listes ? Existe-t-il un map3() ? Pour itérer sur plus de deux listes — trois, quatre, voire 20 — vous devrez utiliser pmap(). Cependant, pmap() exige de fournir les arguments de liste d’une manière un peu différente.
Pour utiliser pmap(), vous devez d’abord créer une liste principale contenant toutes les listes sur lesquelles vous voulez itérer. Cette liste principale est l’entrée de pmap(). Au lieu d’utiliser .x ou .y, utilisez les noms des listes comme noms d’arguments.
Vous allez simuler une nouvelle fois des données, en utilisant cinq listes en entrée au lieu de deux. Avec pmap(), vous gardez un contrôle total sur l’ensemble de données simulé, et vous pourrez utiliser deux moyennes et deux écarts types différents, en plus des différents sites.
Cet exercice fait partie du cours
<cours>Fondations de la programmation fonctionnelle avec purrr</cours>Instructions de l’exercice
- Créez une liste nommée contenant les listes
sites,means,means2,sigmaetsigma2. - Appliquez
pmap()à la liste de listes pour créer une liste de data frames avec trois colonnes ; la première colonne estsites.- La deuxième colonne est
a, issue dernorm()avecmean = meansetsd = sigma. - La troisième colonne est
b, issue dernorm()avecmean = means2etsd = sigma2.
- La deuxième colonne est
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Create a master list, a list of lists
pmapinputs <- list(sites = ___, means = ___, sigma = ___,
means2 = ___, sigma2 = ___)
# Map over the master list
list_of_files_pmap <- pmap(___,
function(___, ___, ___, ___, ___)
data.frame(sites = ___,
a = rnorm(mean = ___, n = 200, sd = ___),
b = rnorm(mean = ___, n = 200, sd = ___)))
list_of_files_pmap