การดีบักค่าสหสัมพันธ์
คุณทำงานให้กับกระทรวงสาธารณสุขของสหรัฐอเมริกา ทีมกำลังสำรวจว่าการตั้งครรภ์หลายคน (ฝาแฝด สามแฝด ฯลฯ) มีความสัมพันธ์กับการเพิ่มน้ำหนักระหว่างตั้งครรภ์มากขึ้นหรือไม่ คุณได้คำนวณค่าสหสัมพันธ์แล้ว แต่ผลที่ได้แตกต่างจากการประมาณของนักวิเคราะห์อีกคนอย่างมีนัยสำคัญ เธอชี้ให้เห็นว่าข้อมูลของคุณไม่ได้บันทึกค่าน้ำหนักที่เพิ่มขึ้นเกิน 99 ปอนด์ คุณจึงตัดสินใจรันการคำนวณใหม่อีกครั้ง และคราวนี้ต้องการล็อกค่าสูงสุดของน้ำหนักที่เพิ่มขึ้นด้วย
ในพื้นที่ทำงาน คุณมีลิสต์ของ data frame ชื่อ ls_df โดยแต่ละองค์ประกอบของ ls_df เก็บข้อมูลการเกิดของแต่ละรัฐ คุณได้เขียนลูป foreach เพื่อรันการคำนวณแบบขนาน
โหลด foreach และ doParallel ไว้ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเขียนโปรแกรมแบบขนานใน R
คำแนะนำการฝึกหัด
- สร้างคลัสเตอร์ขนาดสี่คอร์
- ระบุไฟล์ชื่อ
state_log.txtสำหรับบันทึกข้อความจากคลัสเตอร์ - ภายใน body ของลูป ให้ล็อกค่าสูงสุดของคอลัมน์
weight_gain_poundsใน data framedf - อ่านไฟล์
state_log.txtเพื่อตรวจสอบข้อความที่พิมพ์ออกมา
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Create a cluster of four cores
cl <- ___(___,
# Specify a file to log print statements
___ = "___")
registerDoParallel(cl)
res <- foreach(df = ls_df) %dopar% {
print(paste(unique(df$state), ":",
# Calculate maximum of weight_gain_pounds in df
___(___)))
cor(df$plurality, df$weight_gain_pounds)
}
stopCluster(cl)
# Read log file to check print messages
read.delim("___", sep = ";")