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

Lồng vòng lặp foreach để xem xu hướng giá

Thị trường chứng khoán nổi tiếng vì tính khó lường. Bạn làm ở một công ty đầu tư và sếp muốn xem xu hướng giá cổ phiếu trong một cửa sổ một tuần.

Bạn đã có dữ liệu giá cổ phiếu hằng ngày cho mười công ty công nghệ từ năm 2015. Data Scientist trong nhóm đã cung cấp mã để fit các mô hình hồi quy. Bạn dự định song song hóa đoạn mã này bằng foreach(), %:%, và %dopar%.

Tổng số cột cần lặp được lưu trong không gian làm việc của bạn là ncols, và số hàng là nrows. Các gói parallel, doParalel, và foreach đã được nạp sẵn cho bạn. Cluster cl đã được thiết lập. Bạn cần viết các vòng lặp foreach() lồng nhau.

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

  • Đăng ký cluster để dùng với các vòng lặp foreach.
  • Chỉ định một vòng lặp foreach để lặp qua các cột từ 1 đến ncols, gom kết quả bằng "cbind", và dùng toán tử lồng.
  • Chỉ định vòng lặp foreach còn lại để lặp qua các hàng từ 1 đến nrows, gom kết quả bằng "c", và dùng toán tử do-parallel.
  • Dừng cluster khi mọi tính toán hoàn tất.

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.

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