Začněte nyníZačněte zdarma

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

Zobrazit kurz

Pokyny k cvičení

  • Vytvoř pojmenovaný seznam obsahující seznamy sites, means, means2, sigma a sigma2.
  • 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 a a obsahuje hodnoty z rnorm() s mean = means a sd = sigma.
    • Třetí sloupec se jmenuje b a obsahuje hodnoty z rnorm() s mean = means2 a sd = sigma2.

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
Upravit a spustit kód