ÎncepețiÎncepe gratuit

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

Vezi cursul

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))))
Editează și rulează codul