Verschachtelte foreach-Schleifen für Kurstrends
Die Börse ist bekannt für ihr unvorhersehbares Verhalten. Du arbeitest für eine Investmentfirma, und dein Chef möchte die Trends der Aktienkurse über ein Fenster von einer Woche sehen.
Du hast die Daten der täglichen Aktienkurse von zehn Tech-Unternehmen seit 2015 beschafft. Die Data Scientistin bzw. der Data Scientist in deinem Team hat Code bereitgestellt, um Regressionsmodelle zu fitten. Du planst, diesen Code mit foreach(), %:% und %dopar% zu parallelisieren.
Die Gesamtzahl der zu iterierenden Spalten ist in deinem Workspace als ncols gespeichert, die Zeilenanzahl als nrows. Die Pakete parallel, doParalel und foreach wurden für dich geladen. Der Cluster cl wurde eingerichtet. Du musst die verschachtelten foreach()-Schleifen schreiben.
Diese Übung ist Teil des Kurses
Paralleles Programmieren in R
Anleitung zur Übung
- Registriere den Cluster zur Verwendung mit
foreach-Schleifen. - Definiere eine foreach-Schleife, die über die Spalten eins bis
ncolsiteriert, die Ergebnisse mit"cbind"sammelt und den Verschachtelungsoperator verwendet. - Definiere eine weitere foreach-Schleife, die über die Zeilen eins bis
nrowsiteriert, die Ergebnisse mit"c"sammelt und den do-parallel-Operator verwendet. - Stoppe den Cluster, wenn alle Berechnungen abgeschlossen sind.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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))))