Bắt đầu ngayBắt đầu miễn phí

Biên độ giá hằng ngày

Biên độ giá hằng ngày của một cổ phiếu là chỉ báo tốt về mức độ biến động trên thị trường của nó.

Bạn làm việc cho một công ty đầu tư với vai trò Data Analyst. Sếp của bạn muốn tính biên độ hằng ngày cho cổ phiếu của mười công ty công nghệ hàng đầu thế giới. Bạn có một danh sách các tệp CSV, stock_list, chứa giá cổ phiếu theo ngày. Với mỗi tệp, bạn muốn thêm một cột biên độ. Một Data Analyst mới đã viết đoạn mã R sau để thực hiện việc này:

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)
}

Bạn muốn chạy đoạn mã này song song trên một máy Apple Mac chuyên dụng và muốn dùng cụm FORK để có kết quả tốt hơn. Gói parallel đã được nạp trong không gian làm việc của bạn.

Bài tập này là một phần của khóa học

Lập trình song song trong R

Xem khóa học

Hướng dẫn bài tập

  • Dùng đoạn mã đã cho để viết hàm add_range() nhận đường dẫn tệp làm đối số và thêm cột range vào tệp đó.
  • Tạo cụm FORK với bốn lõi.
  • Áp dụng add_range() cho mọi phần tử của stock_list theo kiểu song song.
  • Dừng cụm.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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
___
Chỉnh sửa và Chạy Mã