Simulace dat se 3 a více vstupy pomocí pmap()
Co když potřebuješ iterovat přes tři seznamy? Existuje nějaký map3()? Pro iteraci přes více než dva seznamy – ať už jsou tři, čtyři, nebo třeba dvacet – je potřeba použít pmap(). Funkce pmap() ale vyžaduje, abys argumenty ve formě seznamů zadal/a trochu jinak.
Aby pmap() fungovalo správně, musíš nejdřív vytvořit hlavní seznam obsahující všechny seznamy, přes které chceš iterovat. Tento hlavní seznam pak slouží jako vstup pro pmap(). Místo .x nebo .y použij jako názvy argumentů přímo názvy jednotlivých seznamů.
Teď si ještě jednou nasimulujeme data – tentokrát ale s pěti vstupními seznamy místo dvou. Díky pmap() máš nad simulovaným datasetem plnou kontrolu: budeš moct pracovat se dvěma různými středy, dvěma různými směrodatnými odchylkami i různými lokalitami.
Toto cvičení je součástí kurzu
Foundations of Functional Programming with purrr
Pokyny k cvičení
- Vytvoř pojmenovaný seznam obsahující seznamy
sites,means,means2,sigmaasigma2. - Pomocí
pmap()iteruj přes seznam seznamů a vytvoř seznam datových rámců se třemi sloupci; první sloupec tvořísites.- Druhý sloupec se jmenuje
aa obsahuje hodnoty zrnorm()smean = meansasd = sigma. - Třetí sloupec se jmenuje
ba obsahuje hodnoty zrnorm()smean = means2asd = sigma2.
- Druhý sloupec se jmenuje
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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