การวนลูปด้วย foreach
กระทรวงสาธารณสุขของสหรัฐอเมริกาได้รับรายงานว่าอัตราผลลัพธ์ที่ไม่พึงประสงค์ระหว่างการคลอดบุตรสูงขึ้น คุณต้องการสืบสวนว่าแนวโน้มนี้เกิดจากอายุของมารดาที่ต่ำหรือสูงเกินไปหรือไม่ ทีมของคุณได้รวบรวมชุดข้อมูลการคลอดของปีก่อนหน้า โดยมีลิสต์ ls_age ซึ่งแต่ละองค์ประกอบเป็นเวกเตอร์ของอายุมารดาสำหรับการคลอดทุกรายการที่บันทึกในแต่ละรัฐของสหรัฐอเมริกา
ลูปต่อไปนี้คำนวณเปอร์เซ็นต์ของการคลอดในแต่ละรัฐที่อายุมารดาน้อยกว่า 20 ปี หรือมากกว่า 35 ปี:
at_risk_perc <- rep(NA, length(ls_age))
for (m in 1:length(ls_age)) {
at_risk_perc[m] <-
sum(ls_age[[m]] > 35 | ls_age[[m]] < 20) * 100/length(ls_age[[m]])
}
อย่างไรก็ตาม การรันลูปนี้ใช้เวลานานเกินไป จึงต้องการทดสอบตัวเลือกอื่น โดยได้โหลด foreach, parallel และ doParallel ไว้ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเขียนโปรแกรมแบบขนานใน R
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Specify input to loop over
at_risk_perc <- foreach(m = ___
# Specify the sequential operator
) ___ {
sum(m > 35 | m < 20) * 100/length(m)}