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

การดีบักค่าสหสัมพันธ์

คุณทำงานให้กับกระทรวงสาธารณสุขของสหรัฐอเมริกา ทีมกำลังสำรวจว่าการตั้งครรภ์หลายคน (ฝาแฝด สามแฝด ฯลฯ) มีความสัมพันธ์กับการเพิ่มน้ำหนักระหว่างตั้งครรภ์มากขึ้นหรือไม่ คุณได้คำนวณค่าสหสัมพันธ์แล้ว แต่ผลที่ได้แตกต่างจากการประมาณของนักวิเคราะห์อีกคนอย่างมีนัยสำคัญ เธอชี้ให้เห็นว่าข้อมูลของคุณไม่ได้บันทึกค่าน้ำหนักที่เพิ่มขึ้นเกิน 99 ปอนด์ คุณจึงตัดสินใจรันการคำนวณใหม่อีกครั้ง และคราวนี้ต้องการล็อกค่าสูงสุดของน้ำหนักที่เพิ่มขึ้นด้วย

ในพื้นที่ทำงาน คุณมีลิสต์ของ data frame ชื่อ ls_df โดยแต่ละองค์ประกอบของ ls_df เก็บข้อมูลการเกิดของแต่ละรัฐ คุณได้เขียนลูป foreach เพื่อรันการคำนวณแบบขนาน

โหลด foreach และ doParallel ไว้ให้แล้ว

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การเขียนโปรแกรมแบบขนานใน R

ดูคอร์ส

คำแนะนำการฝึกหัด

  • สร้างคลัสเตอร์ขนาดสี่คอร์
  • ระบุไฟล์ชื่อ state_log.txt สำหรับบันทึกข้อความจากคลัสเตอร์
  • ภายใน body ของลูป ให้ล็อกค่าสูงสุดของคอลัมน์ weight_gain_pounds ใน data frame df
  • อ่านไฟล์ 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 = ";")
แก้ไขและรันโค้ด