เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การจำลองข้อมูลด้วย 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
แก้ไขและรันโค้ด