Simuler des données avec 3+ intrants à l'aide de pmap()
Et si vous deviez itérer sur trois listes? Existe-t-il une map3()? Pour itérer sur plus de deux listes — trois, quatre ou même 20 — vous devrez utiliser pmap(). Cependant, pmap() exige de fournir les arguments de liste un peu différemment.
Pour utiliser pmap(), vous devez d'abord créer une liste maîtresse qui regroupe toutes les listes sur lesquelles vous voulez itérer. Cette liste maîtresse 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 des données une fois de plus, en utilisant cinq listes comme intrants plutôt que deux. Avec pmap(), vous avez un contrôle complet sur l'ensemble de données simulé, et vous pourrez utiliser deux moyennes différentes et deux écarts types différents, en plus des différents sites.
Cette activité fait partie du cours
Fondements de la programmation fonctionnelle avec purrr
Instructions de l’exercice
- Créez une liste nommée qui contient les listes
sites,means,means2,sigmaetsigma2. - Appliquez
pmap()à la liste de listes pour créer une liste de trames de données à trois colonnes; la première colonne estsites.- La deuxième colonne est
a, qui estrnorm()avecmean = meansetsd = sigma. - La troisième colonne est
b, qui estrnorm()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