การจำลองข้อมูลด้วย input มากกว่า 3 รายการโดยใช้ pmap()
ถ้าต้องการวนซ้ำข้ามสาม list พร้อมกัน จะทำอย่างไร? มี map3() ไหม? สำหรับการวนซ้ำข้ามมากกว่าสอง list ไม่ว่าจะสาม สี่ หรือแม้แต่ 20 list ต้องใช้ pmap() อย่างไรก็ตาม pmap() กำหนดให้ระบุ argument ของ list ในรูปแบบที่แตกต่างออกไปเล็กน้อย
ในการใช้ pmap() ต้องสร้าง master list ที่รวม list ทั้งหมดที่ต้องการวนซ้ำเข้าไว้ด้วยกันก่อน แล้วส่ง master list นี้เป็น input ให้กับ pmap() จากนั้นใช้ชื่อของแต่ละ list เป็น ชื่อ argument แทนการใช้ .x หรือ .y
คราวนี้จะจำลองข้อมูลอีกครั้ง โดยใช้ห้า list เป็น input แทนที่จะเป็นสองอย่างเดิม การใช้ pmap() ช่วยให้ควบคุมชุดข้อมูลที่จำลองขึ้นได้อย่างเต็มที่ และยังสามารถกำหนดค่าเฉลี่ยและค่าเบี่ยงเบนมาตรฐานได้สองชุด พร้อมกับ site ที่แตกต่างกันด้วย
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Foundations of Functional Programming with purrr
คำแนะนำการฝึกหัด
- สร้าง named list ที่ประกอบด้วย list
sites,means,means2,sigmaและsigma2 - ใช้
pmap()วนซ้ำข้าม list ของ list เพื่อสร้าง list ของ data frame ที่มีสามคอลัมน์ โดยคอลัมน์แรกคือsites- คอลัมน์ที่สองคือ
aซึ่งได้จากrnorm()โดยกำหนดmean = meansและsd = sigma - คอลัมน์ที่สามคือ
bซึ่งได้จากrnorm()โดยกำหนดmean = means2และsd = sigma2
- คอลัมน์ที่สองคือ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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