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