CommencerCommencer gratuitement

Nested foreach loops for price trends

The stock market is well-known for its unpredictable behavior. You work for an investment firm and your boss wants to see the trends in stock prices across a window of one week.

You have acquired the data of daily stock prices for ten tech companies since 2015. The Data Scientist on your team has provided code to fit regression models. You plan on parallelizing this code using foreach(), %:%, and%dopar%.

The total number of columns to iterate over is saved in your workspace as ncols, and number of rows as nrows. parallel, doParalel, and foreach packages have been loaded for you. The cluster, cl, has been set up. You need to write the nested foreach() loops.

Cet exercice fait partie du cours

Parallel Programming in R

Afficher le cours

Instructions

  • Register the cluster to use with foreach loops.
  • Specify a foreach loop to iterate over columns one to ncols, collect the results with "cbind", and use the nesting operator.
  • Specify another foreach loop to iterate over rows one to nrows, collect results with "c", and use the do-parallel operator.
  • Stop the cluster when all computations are done.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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))))
Modifier et exécuter le code