Mensimulasikan data 3+ masukan dengan pmap()
Bagaimana jika Anda perlu melakukan iterasi atas tiga list? Apakah ada map3()? Untuk melakukan iterasi atas lebih dari dua list—baik tiga, empat, bahkan 20—Anda perlu menggunakan pmap(). Namun, pmap() memang mengharuskan kita menyuplai argumen list dengan cara yang sedikit berbeda.
Untuk menggunakan pmap(), pertama-tama Anda perlu membuat sebuah master list yang berisi semua list yang ingin kita iterasi. Master list adalah masukan untuk pmap(). Alih-alih menggunakan .x atau .y, gunakan nama list tersebut sebagai nama argumennya.
Anda akan kembali mensimulasikan data, kali ini menggunakan lima list sebagai masukan, bukan dua. Menggunakan pmap() memberi Anda kendali penuh atas himpunan data simulasi, dan memungkinkan Anda menggunakan dua nilai mean dan dua simpangan baku yang berbeda bersama dengan lokasi (sites) yang berbeda.
Latihan ini adalah bagian dari kursus
Dasar-dasar Functional Programming dengan purrr
Petunjuk latihan
- Buat sebuah list bernama yang memuat list
sites,means,means2,sigma, dansigma2. - Lakukan
pmap()atas list dari list tersebut, untuk membuat sebuah list data frame dengan tiga kolom; kolom pertama adalahsites.- Kolom kedua adalah
a, yang merupakanrnorm()denganmean = means, dansd = sigma. - Kolom ketiga adalah
b, yang merupakanrnorm()denganmean = means2, dansd = sigma2.
- Kolom kedua adalah
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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