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
Övningsinstruktioner
- Skapa en namngiven lista som innehåller listorna
sites,means,means2,sigmaochsigma2. - Använd
pmap()över listan av listor för att skapa en lista med dataramar som har tre kolumner; den första kolumnen ärsites.- Den andra kolumnen är
a, som ärrnorm()medmean = meansochsd = sigma. - Den tredje kolumnen är
b, som ärrnorm()medmean = means2ochsd = sigma2.
- Den andra kolumnen är
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