Simulare dati con 3+ input usando pmap()
E se dovessi iterare su tre liste? Esiste un map3()? Per iterare su più di due liste, che siano tre, quattro o persino 20, devi usare pmap(). Tuttavia, pmap() richiede di fornire gli argomenti come liste in modo leggermente diverso.
Per usare pmap(), devi prima creare una master list con tutte le liste su cui vuoi iterare. La master list è l'input di pmap(). Invece di usare .x o .y, usa i nomi delle liste come nomi degli argomenti.
Simulerai i dati un’ultima volta, usando cinque liste come input invece di due. Usare pmap() ti dà il pieno controllo sul dataset simulato e ti permette di usare due medie e due deviazioni standard diverse, insieme ai vari siti.
Questo esercizio fa parte del corso
Le basi della programmazione funzionale con purrr
Istruzioni dell'esercizio
- Crea una lista nominata che contenga le liste
sites,means,means2,sigmaesigma2. - Applica
pmap()alla lista di liste per creare una lista di data frame con tre colonne; la prima colonna èsites.- La seconda colonna è
a, che èrnorm()conmean = meansesd = sigma. - La terza colonna è
b, che èrnorm()conmean = means2esd = sigma2.
- La seconda colonna è
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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