ค่าใช้จ่ายด้านสุขภาพด้วย clusterMap()
ในการประชุมด้านสุขภาพที่ผ่านมา มีการอ้างว่าค่าใช้จ่ายด้านสุขภาพรวมทั่วโลกกำลังเพิ่มสูงขึ้น
คุณเข้าร่วมงานนั้น และต้องการประมาณค่าเบื้องต้นเพื่อทดสอบข้ออ้างนี้ คุณได้รวบรวมชุดข้อมูลที่บอกค่าใช้จ่ายด้านสุขภาพต่อหัวและจำนวนประชากรตั้งแต่ปี 2000 เป็นต้นมา โดยมีลิสต์สองชุด ได้แก่ ls_pop และ ls_exp ซึ่งเก็บขนาดประชากรและค่าใช้จ่ายด้านสุขภาพต่อหัวของแต่ละประเทศตามลำดับ
ฟังก์ชัน total_exp() รับอาร์กิวเมนต์สองตัว คือ pop (จำนวนประชากร) และ exp_pc (ค่าใช้จ่ายด้านสุขภาพต่อหัว) และคืนค่าค่าใช้จ่ายรวมในหน่วยพันล้านดอลลาร์สหรัฐ ต้องการนำฟังก์ชันนี้ไปใช้กับ ls_pop และ ls_exp แบบขนาน โดยโหลดแพ็กเกจ parallel ไว้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเขียนโปรแกรมแบบขนานใน R
คำแนะนำการฝึกหัด
- นำ
total_exp()ไปใช้แบบขนานกับแต่ละองค์ประกอบของls_popและls_exp - ระบุลิสต์ที่จะส่งองค์ประกอบไปยังอาร์กิวเมนต์
popของtotal_exp() - ในทำนองเดียวกัน ระบุลิสต์ที่จะส่งไปยังอาร์กิวเมนต์
exp_pcของtotal_exp()
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
total_exp <- function (pop, exp_pc) {
sum(pop * exp_pc)/1e9
}
cl <- makeCluster(4)
# Apply total_exp using cl to multiple arguments
ls_total <- ___(___, ___,
# Specify first argument
pop = ___,
# Specify second argument
exp_pc = ___)
stopCluster(cl)
print(paste("Average yearly increase in USD billions:", round(mean(diff(unlist(ls_total))))))