Kurs
Meistere for-Schleifen und weitere wichtige R-Funktionen mit unserem Introduction to R-Kurs.
Über einen Vektor iterieren
Wenn du weißt, wie oft du eine Aktion wiederholen willst, ist eine for-Schleife eine gute Option. Die Idee dahinter: Du gehst eine Sequenz nacheinander durch und führst bei jedem Schritt eine Aktion aus. Diese Sequenz ist oft ein Zahlenvektor (zum Beispiel die Folge 1:10), kann aber auch unsortierte Zahlen wie c(2, 5, 4, 6) oder sogar eine Zeichenfolge sein!
for (value in sequence) {
code
}
In Worten heißt das: „Für jeden Wert in meiner Sequenz führe diesen Code aus.“ Beispiele wären: „Für jede Zeile meines Data Frames gib Spalte 1 aus“ oder „Für jedes Wort in meinem Satz prüfe, ob dieses Wort DataCamp ist.“
Probieren wir es aus! Zuerst erstellst du eine Schleife, die die Werte einer Sequenz von 1 bis 10 ausgibt. Dann passt du die Schleife so an, dass sie zusätzlich die Werte von 1 bis 10 aufsummiert, wobei in jeder Iteration der nächste Wert zur laufenden Summe addiert wird.
Anleitung
Ein Vektor seq wurde bereits für dich erstellt. Ergänze die for-Schleife und verwende seq als Sequenz. Gib in jeder Iteration value aus. Eine Variable sum wurde ebenfalls angelegt. Nutze die Schleife, um die Zahlen in seq zu summieren. In jeder Iteration soll value zu sum addiert und anschließend sum ausgegeben werden.
Wenn das verständlich war, mach mit der nächsten Übung weiter! Wenn nicht, findest du hier ein Überblicksvideo.
Überblicksvideo zu For-Schleifen in R
Über Data-Frame-Zeilen iterieren
Angenommen, dich interessieren die Tage, an denen der Apple-Aktienkurs über 117 steigt. Wenn dieser Wert überschritten wird, möchtest du das aktuelle Datum und den Kurs ausgeben. Wenn du einen stock-Data Frame mit einer date- und einer apple-Preisspalte hast, kannst du dann über die Zeilen des Data Frames iterieren, um das zu erreichen? Auf jeden Fall!
Bevor du loslegst: Die Anzahl der Zeilen eines Data Frames erhältst du mit nrow(stock). Dann kannst du die Sequenz 1:nrow(stock) bilden, um darüber zu iterieren.
for (row in 1:nrow(stock)) {
price <- stock[row, "apple"]
date <- stock[row, "date"]
if(price > 117) {
print(paste("On", date,
"the stock price was", price))
}
}
[1] "On 2016-12-21 the stock price was 117.06"
[1] "On 2016-12-27 the stock price was 117.26"
Damit kombinierst du vieles, was wir bisher gelernt haben: if-Statements, Subsetting von Vektoren, Bedingungen und Schleifen! Glückwunsch, das ist eine Menge!
Anleitung
stock befindet sich in deinem Workspace.
Ergänze die Lücken in der for-Schleife, sodass Folgendes gilt:
priceenthält in jeder Iteration den jeweiligen Kurs.dateenthält in jeder Iteration das jeweilige Datum.- Diesmal willst du wissen, ob
appleüber116steigt. - Wenn ja, gib
dateundpriceaus. - Wenn der Kurs unter
116lag, gib dasdateaus und vermerke, dass es kein wichtiger Tag war!
Über Matrixelemente iterieren
Bisher hast du über eindimensionale Datentypen iteriert. Wenn du über die Elemente einer Matrix (Spalten und Zeilen) iterieren willst, brauchst du geschachtelte Schleifen. Damit gibst du gleich die Korrelationen zwischen drei Aktien aus.
Am einfachsten stellst du es dir so vor: Du beginnst in Zeile 1 und gehst nach rechts — Spalte 1, Spalte 2, ... — bis zur letzten Spalte in Zeile 1. Dann gehst du in Zeile 2 und wiederholst den Ablauf.
my_matrix
[,1] [,2]
[1,] "r1c1" "r1c2"
[2,] "r2c1" "r2c2"
# Loop over my_matrix
for(row in 1:nrow(my_matrix)) {
for(col in 1:ncol(my_matrix)) {
print(my_matrix[row, col])
}
}
[1] "r1c1"
[1] "r1c2"
[1] "r2c1"
[1] "r2c2"
Anleitung
Die Korrelationsmatrix corr befindet sich in deinem Workspace.
- Gib
corraus, um einen ersten Blick auf die Daten zu werfen. - Vervollständige die geschachtelte for-Schleife. Sie soll Folgendes erfüllen:
- Die äußere Schleife iteriert über die
rows voncorr. - Die innere Schleife iteriert über die
cols voncorr. - Die print-Anweisung soll die Namen der aktuellen Spalte und Zeile sowie deren Korrelation ausgeben.
- Die äußere Schleife iteriert über die
Schau dir außerdem unser Tutorial zu Schleifen in R an.