Weiter zum Inhalt

For-Schleifen in R

Wenn du weißt, wie oft du eine Aktion wiederholen willst, ist eine for-Schleife eine gute Option. Meistere for-Schleifen mit diesem Tutorial.
Aktualisiert 18. Sept. 2026  · 5 Min. lesen

Mit KI erkunden

ChatGPTClaudePerplexity


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.

eyJsYW5ndWFnZSI6InIgIiwicHJlX2V4ZXJjaXNlX2NvZGUiOiJcbiIsInNh bXBsZSI6IlxuIyBTZXF1ZW5jZVxuICAgICAgICAgc2VxIDwtIGMoMToxMClcblxuICAgICAgICAgIyBQcmludCBsb29wXG4gICAgICAgICBmb3IgKHZhbHVlIGluIF9fXykge1xuICAgICAgICAgICBwcmludChfX18pXG4gICAgICAgICB9XG5cbiAgICAgICAgICAjIEEgc3VtIHZhcmlhYmxlXG4gICAgICAgICAgc3VtIDwtIDBcblxuICAgICAgICAgICMgU3VtIGxvb3BcbiAgICAgICAgICBmb3IgKHZhbHVlIGluIHNlcSkge1xuICAgICAgICAgIHN1bSA8LSBfX18gKyBfX19cbiAgICAgICAgICBwcmludChfX18pXG4gICAgICAgICAgfSIsInNvbHV0aW9uIjoiXG4jIFNlcXVlbmNlXG4gICAgICAgICAgc2VxIDwtIGMoMToxMClcblxuICAgICAgICAgICMgUHJpbnQgbG9vcFxuICAgICAgICAgIGZvciAodmFsdWUgaW4gc2VxKSB7XG4gICAgICAgICAgICAgIHByaW50KHZhbHVlKVxuICAgICAgICAgIH1cblxuICAgICAgICAgICMgQSBzdW0gdmFyaWFibGVcbiAgICAgICAgICBzdW0gPC0gMFxuXG4gICAgICAgICAgIyBTdW0gbG9vcFxuICAgICAgICAgIGZvciAodmFsdWUgaW4gc2VxKSB7XG4gICAgICAgICAgICAgIHN1bSA8LSBzdW0gKyB2YWx1ZVxuICAgICAgICAgICAgICBwcmludChzdW0pXG4gICAgICAgICAgfSIsInNjdCI6IlxudGVzdF9wcmVkZWZpbmVkX29iamVjdHMoXCJzZXFcIilcblxuICAgICAgICAgIHRlc3RfZm9yX2xvb3AoY29uZF90ZXN0ID0gdGVzdF9zdHVkZW50X3R5cGVkKFwidmFsdWUgaW4gc2VxXCIpLFxuICAgICAgICAgICAgICAgICAgZXhwcl90ZXN0ID0gdGVzdF9mdW5jdGlvbihcInByaW50XCIsIGFyZ3MgPSBcInhcIiksXG4gICAgICAgICAgICAgICAgICBpbmRleCA9IDEpXG5cbiAgICAgICAgICB0ZXN0X2Zvcl9sb29wKGNvbmRfdGVzdCA9IHRlc3Rfc3R1ZGVudF90eXBlZChcInZhbHVlIGluIHNlcVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICBleHByX3Rlc3QgPSB0ZXN0X2NvcnJlY3QodGVzdF9mdW5jdGlvbihcInByaW50XCIsIGFyZ3MgPSBcInhcIiksIHsgIyBJZiB0aGUgcHJpbnQgc3RhdGVtZW50IGlzIHdyb25nLCB0aGVuIGNoZWNrIHRoZSBhc3NpZ25tZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9vcih0ZXN0X3N0dWRlbnRfdHlwZWQoXCJzdW0gKyB2YWx1ZVwiKSwgIyBEaWQgdGhleSBhc3NpZ24gdGhpcyBjb3JyZWN0bHk/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3N0dWRlbnRfdHlwZWQoXCJ2YWx1ZSArIHN1bVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwXG4gICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gMilcblxuICAgICAgICAgICAgc3VjY2Vzc19tc2coXCJHcmVhdCBqb2IhIExldCdzIHNlZSB3aGF0IGVsc2UgeW91IGNhbiBkbyB3aXRoIGZvciBsb29wcy5cIikiLCJoaW50IjoiXG4tIEluIHRoZSBmaXJzdCBsb29wLCByZW1lbWJlciB3aGF0IHlvdXIgc2VxdWVuY2Ugc2hvdWxkIGJlLlxuICAgICAgICAgICAgICAgIC0gSW4gdGhlIHNlY29uZCBsb29wLCB5b3UgaGF2ZSB0byBhZGQgYHZhbHVlYCB0byBgc3VtYCBhbmQgdGhlbiBhc3NpZ24gdGhhdCB2YWx1ZSBiYWNrIHRvIGBzdW1gLiJ9

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:

  • price enthält in jeder Iteration den jeweiligen Kurs.
  • date enthält in jeder Iteration das jeweilige Datum.
  • Diesmal willst du wissen, ob apple über 116 steigt.
  • Wenn ja, gib date und price aus.
  • Wenn der Kurs unter 116 lag, gib das date aus und vermerke, dass es kein wichtiger Tag war!
eyJsYW5ndWFnZSI6InIgIiwicHJlX2V4ZXJjaXNlX2NvZGUiOiJcbnN0b2Nr IDwtIGRhdGEuZnJhbWUoXG4gICAgICAgICAgICAgIGRhdGUgPSBhcy5EYXRlKGMoXCIyMDE2LTEyLTAxXCIsIFwiMjAxNi0xMi0wMlwiLCBcIjIwMTYtMTItMDNcIiwgXCIyMDE2LTEyLTA0XCIsIFwiMjAxNi0xMi0wNVwiLCBcIjIwMTYtMTItMDZcIiwgXCIyMDE2LTEyLTA3XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAxNi0xMi0wOFwiLCBcIjIwMTYtMTItMDlcIiwgXCIyMDE2LTEyLTEwXCIsIFwiMjAxNi0xMi0xMVwiLCBcIjIwMTYtMTItMTJcIiwgXCIyMDE2LTEyLTEzXCIsIFwiMjAxNi0xMi0xNFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDE2LTEyLTE1XCIsIFwiMjAxNi0xMi0xNlwiLCBcIjIwMTYtMTItMTdcIiwgXCIyMDE2LTEyLTE4XCIsIFwiMjAxNi0xMi0xOVwiLCBcIjIwMTYtMTItMjBcIiwgXCIyMDE2LTEyLTIxXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMTYtMTItMjJcIiwgXCIyMDE2LTEyLTIzXCIsIFwiMjAxNi0xMi0yNFwiLCBcIjIwMTYtMTItMjVcIiwgXCIyMDE2LTEyLTI3XCIsIFwiMjAxNi0xMi0yOFwiLCBcIjIwMTYtMTItMjlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAxNi0xMi0zMFwiKSkpXG5cbiAgICAgICAgICAgICAgYXBwbGUgPSBjKDEwOS40OSwgMTA5LjkwLCBOQSwgTkEsIDEwOS4xMSwgMTA5Ljk1LCAxMTEuMDMsIDExMi4xMiwgMTEzLjk1LCBOQSwgTkEsIDExMy4zMCwgMTE1LjE5LFxuICAgICAgICAgICAgICAgICAgICAgICAgMTE1LjE5LCAxMTUuODIsIDExNS45NywgTkEsIE5BLCAxMTYuNjQsIDExNi45NSwgMTE3LjA2LCAxMTYuMjksIDExNi41MiwgTkEsIE5BLCAxMTcuMjYsXG4gICAgICAgICAgICAgICAgICAgICAgICAxMTYuNzYsIDExNi43MywgMTE1LjgyKVxuICAgICAgICAgIClcbiAgICAgICAgICBzdG9jayA8LSBzdWJzZXQoc3RvY2ssICFpc24uYShhcHBsZSkpIiwic2FtcGxlIjoiXG4jIExvb3Agb3ZlciBzdG9jayByb3dzXG4gICAgICAgICBmb3IgKHJvdyBpbiAxOl9fXykge1xuICAgICAgICAgICAgICBwcmljZSA8LSBzdG9ja1tfX18sIFwiX19fXCJdXG4gICAgICAgICAgICAgIGRhdGUgIDwtIHN0b2NrW19fXywgXCJfX19cIl1cblxuICAgICAgICAgICAgICBpZihfX18gPiBfX18pIHtcbiAgICAgICAgICAgICAgICAgIHByaW50KHBhc3RlKFwiT25cIiwgX19fLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRoZSBzdG9jayBwcmljZSB3YXNcIiwgX19fKSlcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHByaW50KHBhc3RlKFwiVGhlIGRhdGU6IF9fXyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaXMgbm90IGFuIGltcG9ydGFudCBkYXkhXCIpKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9Iiwic29sdXRpb24iOiJcbiMgTG9vcCBvdmVyIHN0b2NrIHJvd3NcbiAgICAgICAgIGZvciAocm93IGluIDE6bnJvdyhzdG9jaykpIHtcbiAgICAgICAgICAgICAgcHJpY2UgPC0gc3RvY2tbcm93LCBcImFwcGxlXCJdXG4gICAgICAgICAgICAgIGRhdGUgIDwtIHN0b2NrW3JvdywgXCJkYXRlXCJdXG5cbiAgICAgICAgICAgICAgaWYocHJpY2UgPiAxMTYpIHtcbiAgICAgICAgICAgICAgICAgIHByaW50KHBhc3RlKFwiT25cIiwgZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aGUgc3RvY2sgcHJpY2Ugd2FzXCIsIHByaWNlKSlcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHByaW50KHBhc3RlKFwiVGhlIGRhdGU6XCIsIGRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlzIG5vdCBhbiBpbXBvcnRhbnQgZGF5IVwiKSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSIsInNjdCI6IlxudGVzdF9wcmVkZWZpbmVkX29iamVjdHMoXCJzdG9ja1wiKVxuXG4gICAgICAgICAgdGVzdF9mb3JfbG9vcChjb25kX3Rlc3QgPSB0ZXN0X3N0dWRlbnRfdHlwZWQoXCJyb3cgaW4gMTpucm93KHN0b2NrKVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90ZXN0ID0gdGVzdF9pZl9lbHNlKGlmX2NvbmRfdGVzdCAgID0gdGVzdF9zdHVkZW50X3R5cGVkKFwicHJpY2UgPiAxMTZcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9leHByX3Rlc3QgICA9IHRlc3RfZnVuY3Rpb24oXCJwcmludFwiLCBhcmdzID0gXCJ4XCIsIGluY29ycmVjdF9tc2cgPSBcIlRoZSBwcmludCBzdGF0ZW1lbnQgb3V0cHV0IGlzIGluY29ycmVjdCwgYXJlIGBkYXRlYCBhbmQgYHByaWNlYCBkZWZpbmVkIGNvcnJlY3RseT9cIiksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VfZXhwcl90ZXN0ID0gdGVzdF9mdW5jdGlvbihcInByaW50XCIsIGFyZ3MgPSBcInhcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICBzdWNjZXNzX21zZyhcIk5pY2Ugam9iIVwiKSIsImhpbnQiOiJcbi0gVGhlIGJsYW5rcyB5b3UgZmlsbCBpbiBzaG91bGQgYmUgc2ltaWxhciB0byB0aGUgZXhhbXBsZS5cbiAgICAgICAgICAgICAgICAtIEZvciB0aGUgZWxzZSBzdGF0ZW1lbnQgYmxhbmtzLCB5b3UgbmVlZCB0byBzZWxlY3QgdGhlIGBkYXRlYCBmb3IgdGhlIGN1cnJlbnQgcm93LiJ9

Ü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 corr aus, 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 von corr.
    • Die innere Schleife iteriert über die cols von corr.
    • Die print-Anweisung soll die Namen der aktuellen Spalte und Zeile sowie deren Korrelation ausgeben.
eyJsYW5ndWFnZSI6InIgIiwicHJlX2V4ZXJjaXNlX2NvZGUiOiJcbnN0b2Nr cyA8LSBjKFwiYXBwbGVcIiwgXCJpYm1cIiwgXCJtaWNyXCIpXG4gICAgICAg IGNvcnIgPC0gbWF0cml4KGMoMSwgLjk2LCAuODgsIC45NiwgMSwgLjc0LCAu ODgsIC43NCwgMSksIG5yb3c9MylcblxuICAgICAgICBjb2xuYW1lcyhjb3Jy KSA8LSBzdG9ja3NcbiAgICAgICAgcm93bmFtZXMoY29ycikgPC0gc3RvY2tz Iiwic2FtcGxlIjoiXG4gICMgUHJpbnQgb3V0IGNvcnJcblxuXG4gICAgICAg ICMgQ3JlYXRlIGEgbmVzdGVkIGxvb3BcbiAgICAgICAgZm9yKHJvdyBpbiAx Om5yb3coX19fKSkge1xuICAgICAgICAgICAgZm9yKGNvbCBpbiAxOl9fXyhj b3JyKSkge1xuICAgICAgICAgICAgICAgIHByaW50KHBhc3RlKGNvbG5hbWVz KGNvcnIpW19fX10sIFwiYW5kXCIsIHJvd25hbWVzKGNvcnIpW19fX10sXG4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoYXZlIGEgY29ycmVsYXRp b24gb2ZcIiwgY29ycltyb3csY29sXSkpXG4gICAgICAgICAgICB9XG4gICAg ICAgIH0iLCJzb2x1dGlvbiI6IlxuICAjIFByaW50IG91dCBjb3JyXG4gICAg ICAgICAgY29yclxuXG4gICAgICAgICAgIyBDcmVhdGUgYSBuZXN0ZWQgbG9v cFxuICAgICAgICAgIGZvcihyb3cgaW4gMTpucm93KGNvcnIpKSB7XG4gICAg ICAgICAgICAgIGZvcihjb2wgaW4gMTpuY29sKGNvcnIpKSB7XG4gICAgICAg ICAgICAgICAgICBwcmludChwYXN0ZShjb2xuYW1lcyhjb3JyKVtjb2xdLCBc ImFuZFwiLCByb3duYW1lcyhjb3JyKVtyb3ddLFxuICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXCJoYXZlIGEgY29ycmVsYXRpb24gb2ZcIiwgY29y cltyb3csY29sXSkpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9Iiwi c2N0IjoiXG50ZXN0X2Zvcl9sb29wKGNvbmRfdGVzdCA9IHRlc3Rfc3R1ZGVu dF90eXBlZChcInJvdyBpbiAxOm5yb3coY29ycilcIiksXG4gICAgICAgICAg ICAgICAgICAgICAgICBleHByX3Rlc3QgPSB0ZXN0X2Zvcl9sb29wKGNvbmRf dGVzdCAgID0gdGVzdF9zdHVkZW50X3R5cGVkKFwiY29sIGluIDE6bmNvbChj b3JyKVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZXhwcl90ZXN0ICAgPSB0ZXN0X2Z1bmN0aW9uKFwi cHJpbnRcIiwgYXJncyA9IFwieFwiLCBpbmNvcnJlY3RfbXNnID0gXCJUaGUg cHJpbnQgc3RhdGVtZW50IG91dHB1dCBpcyBpbmNvcnJlY3QsIGRpZCB5b3Ug ZmlsbCBpbiBgY29sYCBhbmQgYHJvd2AgZm9yIHRoZSBibGFua3M/XCIpXG4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcblxuICAgICAgICAg ICBzdWNjZXNzX21zZyhcIk5pY2UhIFRoYXQgd2FzIGEgdG91Z2ggb25lLiBO ZXN0ZWQgbG9vcHMgcmVxdWlyZSBhIGxvdCBvZiBjb21wdXRhdGlvbmFsIGVu ZXJneSwgYmVjYXVzZSBzbyBtYW55IGNhbGN1bGF0aW9ucyBhcmUgcmVxdWly ZWQuXCIpIiwiaGludCI6IlxuICAtIERvbid0IGZvcmdldCB0byB1c2UgdGhl IGBucm93KClgIGFuZCBgbmNvbCgpYCBmdW5jdGlvbnMgaW4geW91ciBsb29w LlxuICAgICAgICAgICAgICAgICAgLSBUaGUgY29kZSB1c2VkIHRvIGNyZWF0 ZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBsb29wIHNob3VsZCBiZSB0aGUgc2Ft ZSBhcyB0aGUgZXhhbXBsZS4ifQ==

Schau dir außerdem unser Tutorial zu Schleifen in R an.

Themen
R
Datenwissenschaft

Erfahre mehr über R

Kurs

R für Fortgeschrittene

6 Std.
676K
Setze deine Reise zum R-Ninja fort, indem du etwas über bedingte Anweisungen, Schleifen und Vektorfunktionen lernst.
Details anzeigenRight Arrow
Kurs Starten
Mehr anzeigenRight Arrow