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
Oefeninstructies
- Maak een benoemde lijst met de lijsten
sites,means,means2,sigmaensigma2. - Gebruik
pmap()over de lijst-van-lijsten om een lijst met dataframes te maken met drie kolommen; de eerste kolom issites.- De tweede kolom is
a, afkomstig vanrnorm()metmean = meansensd = sigma. - De derde kolom is
b, afkomstig vanrnorm()metmean = means2ensd = sigma2.
- De tweede kolom is
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