การซ้อน foreach loop เพื่อวิเคราะห์แนวโน้มราคา
ตลาดหุ้นเป็นที่รู้จักดีในแง่ของความผันผวนที่คาดเดาได้ยาก คุณทำงานในบริษัทด้านการลงทุนและหัวหน้าต้องการดูแนวโน้มราคาหุ้นในช่วงเวลาหนึ่งสัปดาห์
คุณได้รวบรวมข้อมูลราคาหุ้นรายวันของบริษัทเทคโนโลยี 10 แห่งตั้งแต่ปี 2015 Data Scientist ในทีมได้เตรียมโค้ดสำหรับ fit โมเดล regression ไว้แล้ว และคุณวางแผนจะทำให้โค้ดนี้ทำงานแบบขนานโดยใช้ foreach(), %:% และ %dopar%
จำนวนคอลัมน์ทั้งหมดที่จะวนซ้ำถูกเก็บไว้ในตัวแปร ncols และจำนวนแถวใน nrows แพ็กเกจ parallel, doParallel และ foreach ถูกโหลดให้แล้ว และ cluster cl ได้ถูกตั้งค่าไว้แล้ว สิ่งที่ต้องทำคือเขียน foreach() loop แบบซ้อนกัน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเขียนโปรแกรมแบบขนานใน R
คำแนะนำการฝึกหัด
- ลงทะเบียน cluster เพื่อใช้งานกับ
foreachloop - กำหนด 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))))