Вкладені цикли 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))))