Bucle foreach imbricate pentru tendințele prețurilor
Piața bursieră este cunoscută pentru comportamentul său imprevizibil. Lucrezi pentru o firmă de investiții, iar șeful tău vrea să vadă tendințele prețurilor acțiunilor pe parcursul unei săptămâni.
Ai obținut datele cu prețurile zilnice ale acțiunilor pentru zece companii tech începând din 2015. Omul de știință al datelor din echipa ta a furnizat cod pentru a ajusta modele de regresie. Intenționezi să paralelizezi acest cod folosind foreach(), %:% și %dopar%.
Numărul total de coloane peste care se va itera este salvat în spațiul de lucru ca ncols, iar numărul de rânduri ca nrows. Pachetele parallel, doParalel și foreach au fost deja încărcate. Clusterul cl a fost configurat. Trebuie să scrii buclele foreach() imbricate.
Acest exercițiu face parte din cursul
Programare paralelă în R
Instrucțiuni pentru exercițiu
- Înregistrează clusterul pentru a fi folosit cu buclele
foreach. - Specifică o buclă foreach care să itereze peste coloanele de la unu la
ncols, să colecteze rezultatele cu"cbind"și să folosească operatorul de imbricare. - Specifică o altă buclă foreach care să itereze peste rândurile de la unu la
nrows, să colecteze rezultatele cu"c"și să folosească operatorul do-parallel. - Oprește clusterul după ce toate calculele sunt finalizate.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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))))