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
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ộtrangevà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ủastock_listtheo 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
___