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

การซ้อน foreach loop เพื่อวิเคราะห์แนวโน้มราคา

ตลาดหุ้นเป็นที่รู้จักดีในแง่ของความผันผวนที่คาดเดาได้ยาก คุณทำงานในบริษัทด้านการลงทุนและหัวหน้าต้องการดูแนวโน้มราคาหุ้นในช่วงเวลาหนึ่งสัปดาห์

คุณได้รวบรวมข้อมูลราคาหุ้นรายวันของบริษัทเทคโนโลยี 10 แห่งตั้งแต่ปี 2015 Data Scientist ในทีมได้เตรียมโค้ดสำหรับ fit โมเดล regression ไว้แล้ว และคุณวางแผนจะทำให้โค้ดนี้ทำงานแบบขนานโดยใช้ foreach(), %:% และ %dopar%

จำนวนคอลัมน์ทั้งหมดที่จะวนซ้ำถูกเก็บไว้ในตัวแปร ncols และจำนวนแถวใน nrows แพ็กเกจ parallel, doParallel และ foreach ถูกโหลดให้แล้ว และ cluster cl ได้ถูกตั้งค่าไว้แล้ว สิ่งที่ต้องทำคือเขียน foreach() loop แบบซ้อนกัน

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

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

ดูคอร์ส

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

  • ลงทะเบียน cluster เพื่อใช้งานกับ foreach loop
  • กำหนด foreach loop ให้วนซ้ำคอลัมน์ตั้งแต่ 1 ถึง ncols โดยรวบรวมผลลัพธ์ด้วย "cbind" และใช้ตัวดำเนินการสำหรับซ้อน loop
  • กำหนด foreach loop อีกตัวให้วนซ้ำแถวตั้งแต่ 1 ถึง nrows โดยรวบรวมผลลัพธ์ด้วย "c" และใช้ตัวดำเนินการสำหรับประมวลผลแบบขนาน
  • หยุด cluster เมื่อการคำนวณทั้งหมดเสร็จสิ้น

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Register the cluster to use with %dopar%
___
# Use foreach loop to iterate over columns one to ncol
moving_trend <- foreach(___, ___) %:%
# Iterate over rows one to nrows within each column
  foreach(___, ___) %dopar% {
    prices <- data[row:(row + 6), col]
    if (any(is.na(prices))) NA
    else {days <- 1:7
          model <- lm(prices ~ days)
          model$coefficients[2]}
  }
# Stop cluster  
___
print(paste("Total number of models fit:", sum(!is.na(moving_trend))))
แก้ไขและรันโค้ด