Kom igångKom igång gratis

Simulera data med fler än 3 indata med pmap()

Vad händer om du behöver iterera över tre listor? Finns det en map3()? För att iterera över fler än två listor – vare sig det rör sig om tre, fyra eller till och med 20 – behöver du använda pmap(). Funktionen kräver dock att listargumenten anges på ett något annorlunda sätt.

För att använda pmap() måste du först skapa en masterlista som innehåller alla listor du vill iterera över. Masterlistan är indatat till pmap(). I stället för .x eller .y använder du listnamnen som argumentnamn.

Du ska simulera data ytterligare en gång, den här gången med fem listor som indata i stället för två. Med pmap() får du full kontroll över det simulerade datasetet och kan använda två olika medelvärden och två olika standardavvikelser tillsammans med de olika platserna.

Den här övningen är en del av kursen

Grunderna i funktionell programmering med purrr

Visa kurs

Övningsinstruktioner

  • Skapa en namngiven lista som innehåller listorna sites, means, means2, sigma och sigma2.
  • Använd pmap() över listan av listor för att skapa en lista med dataramar som har tre kolumner; den första kolumnen är sites.
    • Den andra kolumnen är a, som är rnorm() med mean = means och sd = sigma.
    • Den tredje kolumnen är b, som är rnorm() med mean = means2 och sd = sigma2.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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
Redigera och kör kod