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

ช่วงราคารายวัน

ช่วงราคาของหุ้นในแต่ละวันเป็นตัวชี้วัดความผันผวนของตลาดได้ดี

คุณทำงานเป็น 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
___
แก้ไขและรันโค้ด