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