CommencezCommencez gratuitement

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

Voir le cours

Instructions de l’exercice

  • Créez une liste nommée qui contient les listes sites, means, means2, sigma et sigma2.
  • Appliquez pmap() à la liste de listes pour créer une liste de trames de données à trois colonnes; la première colonne est sites.
    • La deuxième colonne est a, qui est rnorm() avec mean = means et sd = sigma.
    • La troisième colonne est b, qui est 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