開始使用免費開始

用巢狀 foreach 迴圈觀察價格趨勢

股市以難以預測而聞名。你在一家投資公司任職,你的主管想看到以一週為視窗的股價趨勢。

你已取得自 2015 年以來 10 家科技公司的每日股價資料。團隊中的資料科學家已提供用來擬合迴歸模型的程式碼。你打算使用 foreach()%:%%dopar% 將這段程式碼平行化。

要迭代的欄數已存為工作環境中的 ncols,列數為 nrowsparalleldoParalelforeach 套件已為你載入。叢集 cl 也已設定完成。你需要撰寫巢狀的 foreach() 迴圈。

本練習屬於課程

R 平行程式設計

檢視課程

練習說明

  • 登錄要搭配 foreach 迴圈使用的叢集。
  • 指定一個 foreach 迴圈,對第 1 欄到第 ncols 欄迭代,使用 "cbind" 收集結果,並使用巢狀運算子。
  • 再指定一個 foreach 迴圈,對第 1 列到第 nrows 列迭代,使用 "c" 收集結果,並使用 do-parallel 運算子。
  • 當所有運算完成後,停止叢集。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# 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))))
編輯並執行程式碼