ПочатиПочніть безкоштовно

Вкладені цикли foreach для трендів цін

Фондовий ринок відомий своєю непередбачуваністю. Ви працюєте в інвестиційній компанії, і керівник хоче побачити тренди цін на акції за вікно в один тиждень.

У вас є дані про щоденні ціни акцій десяти технологічних компаній з 2015 року. Дата-сайєнтист у вашій команді надав код для побудови регресійних моделей. Ви плануєте розпаралелити цей код за допомогою foreach(), %:% та %dopar%.

Загальну кількість стовпців для ітерацій збережено у вашому робочому середовищі як ncols, а кількість рядків — як nrows. Пакети parallel, doParalel і foreach уже завантажено для вас. Кластер cl налаштовано. Вам потрібно написати вкладені цикли foreach().

Ця вправа є частиною курсу

Паралельне програмування в R

Переглянути курс

Інструкції до вправи

  • Зареєструйте кластер для використання в циклах foreach.
  • Задайте цикл foreach для ітерацій за стовпцями від одного до ncols, збирання результатів за допомогою "cbind" і використання оператора вкладення.
  • Задайте ще один цикл foreach для ітерацій за рядками від одного до nrows, збирання результатів за допомогою "c" і використання оператора do-parallel.
  • Зупиніть кластер, коли всі обчислення завершено.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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))))
Редагувати та запускати код