Kom igångKom igång gratis

Kapslade foreach-loopar för pristrender

Aktiemarknaden är välkänd för sitt oförutsägbara beteende. Du arbetar på ett investmentbolag och din chef vill se trenderna i aktiekurser över ett fönster på en vecka.

Du har hämtat data över dagliga aktiekurser för tio teknikföretag sedan 2015. Datavetaren i ditt team har tillhandahållit kod för att anpassa regressionsmodeller. Du planerar att parallellisera den här koden med foreach(), %:% och %dopar%.

Det totala antalet kolumner att iterera över är sparat i din arbetsyta som ncols, och antalet rader som nrows. Paketen parallel, doParallel och foreach har redan laddats in. Klustret cl har konfigurerats. Du behöver skriva de kapslade foreach()-looparna.

Den här övningen är en del av kursen

Parallell programmering i R

Visa kurs

Övningsinstruktioner

  • Registrera klustret som ska användas med foreach-loopar.
  • Ange en foreach-loop som itererar över kolumnerna ett till ncols, samlar resultaten med "cbind" och använder kapslingsoperatorn.
  • Ange ytterligare en foreach-loop som itererar över raderna ett till nrows, samlar resultaten med "c" och använder do-parallel-operatorn.
  • Stoppa klustret när alla beräkningar är klara.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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))))
Redigera och kör kod