CommencerCommencez gratuitement

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>
Voir le cours

Instructions de l’exercice

  • Créez une liste nommée contenant les listes sites, means, means2, sigma et sigma2.
  • Appliquez pmap() à la liste de listes pour créer une liste de data frames avec trois colonnes ; la première colonne est sites.
    • La deuxième colonne est a, issue de rnorm() avec mean = means et sd = sigma.
    • La troisième colonne est b, issue de rnorm() avec mean = means2 et sd = sigma2.

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
Modifier et exécuter le code