Aan de slagGa gratis aan de slag

Data simuleren met 3+ inputs met pmap()

Wat als je over drie lijsten moet itereren? Bestaat er een map3()? Om over meer dan twee lijsten te itereren—of het er nu drie, vier of zelfs 20 zijn—gebruik je pmap(). Wel vraagt pmap() dat je de lijstargumenten op een iets andere manier aanlevert.

Om pmap() te gebruiken, maak je eerst een masterlijst met alle lijsten waarover je wilt itereren. Die masterlijst is de input voor pmap(). In plaats van .x of .y gebruik je de lijstnamen als argumentnamen.

Je gaat nog een keer data simuleren, nu met vijf lijsten als input in plaats van twee. Met pmap() heb je volledige controle over je gesimuleerde gegevensset, en kun je twee verschillende gemiddelden en twee verschillende standaarddeviaties gebruiken, samen met de verschillende locaties.

Deze oefening maakt deel uit van de cursus

Basis van functioneel programmeren met purrr

Cursus bekijken

Oefeninstructies

  • Maak een benoemde lijst met de lijsten sites, means, means2, sigma en sigma2.
  • Gebruik pmap() over de lijst-van-lijsten om een lijst met dataframes te maken met drie kolommen; de eerste kolom is sites.
    • De tweede kolom is a, afkomstig van rnorm() met mean = means en sd = sigma.
    • De derde kolom is b, afkomstig van rnorm() met mean = means2 en sd = sigma2.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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
Code bewerken en uitvoeren