ช่วงราคารายวัน
ช่วงราคาของหุ้นในแต่ละวันเป็นตัวชี้วัดความผันผวนของตลาดได้ดี
คุณทำงานเป็น Data Analyst ในบริษัทลงทุนแห่งหนึ่ง หัวหน้าต้องการคำนวณช่วงราคารายวันของหุ้นจากบริษัทเทคโนโลยี 10 อันดับแรกของโลก
คุณมีรายการไฟล์ CSV ชื่อ stock_list ซึ่งเก็บราคาหุ้นรายวัน และต้องการเพิ่มคอลัมน์ range ให้กับแต่ละไฟล์ Data Analyst รุ่นน้องได้เขียนโค้ด R สำหรับงานนี้ไว้ดังนี้:
for (file in file_list) {
df <- read.csv(file)
df$range <- 0
for (r in 1:nrow(df)) {
df$range[r] <- df$High[r] - df$Low[r]
}
write.csv(df, file)
}
คุณต้องการรันโค้ดนี้แบบขนานบน Apple Mac และอยากใช้ FORK cluster เพื่อประสิทธิภาพที่ดีขึ้น โดยมีแพ็กเกจ parallel โหลดไว้ใน workspace แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเขียนโปรแกรมแบบขนานใน R
คำแนะนำการฝึกหัด
- นำโค้ดที่มีอยู่มาสร้างเป็นฟังก์ชัน
add_range()ที่รับ path ของไฟล์เป็น argument และเพิ่มคอลัมน์rangeลงในไฟล์นั้น - สร้าง FORK cluster ขนาด 4 cores
- นำ
add_range()ไปใช้กับทุกองค์ประกอบในstock_listแบบขนาน - หยุดการทำงานของ cluster
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Make a function out of existing code
add_range <- function (file) {
___
}
# Make FORK cluster of four cores
cluster <- makeCluster(___, type = "___")
# Apply add_range to stock_list in parallel
out <- parLapply(___, ___, ___)
# Stop cluster
___