For-Loop in R: So funktioniert die For-Schleife in der funktionalen Programmiersprache

Wie nahezu jede andere Programmiersprache unterstützt auch die funktionale und objektorientierte Sprache R die Kontrollstruktur der For-Schleife. Mit einer For-Loop in R können Sie durch eine Aufzählung iterieren oder aber Zählschleifen realisieren.

Günstige Webhosting-Pakete von IONOS!

Vertrauen Sie auf flexibel skalierbares und zuverlässiges Webhosting inklusive persönlichem Berater mit IONOS!

Kostenlose Domain
SSL Zertifikat
DDoS-Schutz

Einsatzmöglichkeiten

Egal, ob Sie gerade erst das Programmieren lernen oder bereits länger eigene Programme entwickeln, eine For-Schleife ist Ihnen sicher bereits begegnet.

Wie in anderen Sprachen auch wird die For-Loop in der R-Programmierung immer dann eingesetzt, wenn die Anzahl an Schleifendurchläufen im Vorhinein bekannt ist und Sie bestimmte Codeblöcke wiederholt ausführen möchten. Eine For-Loop ist also das Mittel der Wahl, wenn Sie beispielsweise einen Zähler in Ihrem Programm implementieren möchten, der bis zur Zahl fünf hochzählt.

Viele Programmiersprachen wie z. B. Java unterstützen außerdem das Konzept der Foreach-Loop, mit der Sie direkt durch einen Array oder eine Liste iterieren und auf jedes Element der Datenstruktur zugreifen können. Das ist insbesondere dann praktisch, wenn Sie eine Operation für alle Elemente einer Datenstruktur durchführen möchten. Auch in R wird diese Variante einer For-Schleife unterstützt. Die Foreach-Loop in R wird ebenfalls mit dem Schlüsselwort „for“ eingeleitet.

Im Grunde genommen lässt sich jede For-Loop in R aber auch durch eine While-Schleife ersetzen. Der zentrale Vorteil von For-Schleifen ist neben der erhöhten Lesbarkeit die Kompaktheit des eingesetzten Codes.

Tipp

Im Webspace von IONOS können Sie all Ihre Projekte bequem online stellen. Der sichere Webspeicher sorgt mit regelmäßigen Backups außerdem dafür, dass Ihre Programme bestens gegen Datenverlust geschützt sind.

Die Syntax der R-For-Loop

Wenn Sie eine For-Schleife in R einsetzen möchten, müssen Sie darauf achten, die syntaktischen Besonderheiten des Schleifenkonstrukts zu berücksichtigen.

Eine For-Loop besteht im Grunde genommen aus zwei wesentlichen Elementen: dem Schleifenkopf und dem Schleifenrumpf. Da es sich bei For-Loops in R um kopfgesteuerte Schleifen handelt, wird der Schleifenkopf zuallererst ausgeführt. Erst, wenn die dort spezifizierte Bedingung zutrifft, wird der Code, den Sie im Schleifenrumpf formuliert haben, ausgeführt.

Der Schleifenkopf wird mit dem Schlüsselwort „for“ eingeleitet. In runden Klammern folgt dann der Name Ihrer Zählvariable, gefolgt von dem Schlüsselwort „in“. Im Anschluss geben Sie an, durch was genau Sie iterieren möchten. Das kann beispielsweise eine Zahlenrange, aber auch eine Liste oder ein Vektor sein. Der im Anschluss folgende Schleifenrumpf wird durch geschweifte Klammern gekennzeichnet.

Verschiedene R-For-Loops

Zählschleifen

Wie auch For-Loops in Python arbeiten For-Loops in R in erster Linie mit einer Zahlenrange. Wenn Sie also alle Zahlen zwischen 1 und 10 auf Ihrem Bildschirm ausgeben möchten, sieht die entsprechende R-For-Loop wie folgt aus:

for (x in 1:10) {
	print(x)
}

Im obigen Codebeispiel sehen Sie, dass im Schleifenkopf der R-For-Loop eine Variable x eingeführt wird. Mit dem Schlüsselwort „in“ wird für genau diese Variable spezifiziert, dass sie sich im Wertebereich zwischen 1 und 10 bewegen soll. Das Inkrementieren in ganzzahligen Schritten übernimmt R hierbei automatisch. Beachten Sie, dass die Zahl, die an zweiter Stelle genannt wird, im Gegensatz zur Python-Range-Funktion inkludiert wird.

Sie können mit Ihrer Zählschleife auch von einer Zahl herunterzählen. Vertauschen Sie hierfür einfach die beiden Grenzen im Schleifenkopf und nennen Sie die größere Zahl zuerst. Auch hier wird R automatisch für Sie dekrementieren:

for (x in 10:1) {
	print(x)
}

Ihr Programm wird alle Ganzzahlen beginnend bei 10 und endend bei 1 auf dem Bildschirm ausgeben.

Foreach-Loops

Obwohl R kein eigenes Schlüsselwort für Foreach-Loops eingebaut hat, können Sie sich in der Programmiersprache dennoch der Logik von Foreach-Loops bedienen. Auch diese Schleifen werden in R mit dem Schlüsselwort „for“ eingeleitet:

cars <- list("limousine", "cabrio", "suv")
for (x in cars) {
	print (x)
}

Hier sehen Sie eine Liste namens cars, in der verschiedene Autotypen gespeichert wurden. Die anschließende R-For-Loop iteriert über jedes Element aus dieser Liste und gibt es auf dem Bildschirm auf. Der Name des Elements, durch das Sie iterieren möchten (in unserem Falle also cars), wird ebenfalls hinter dem Schlüsselwort „in“ angegeben.

Eine R-For-Loop abbrechen – das Schlüsselwort „break“

Wenn Sie beispielsweise in einer Liste nach einem spezifischen Element suchen möchten, kann es hilfreich sein, Ihre For-Loop bereits dann abzubrechen, wenn Sie das entsprechende Element gefunden haben. So sparen Sie sich in vielen Fällen unnötige Schleifendurchläufe, und Ihr Programm benötigt weniger Rechenleistung. Hierfür beinhaltet R das Schlüsselwort „break“:

cars <- list("limousine", "cabrio", "suv", "supersport", "oldtimer")
for (x in cars) {
print (x)
	if (x == "suv") {
		break
}
}

Im obigen Codebeispiel haben wir unsere Liste namens cars erweitert. Wir möchten die Ausgabe von Autotypen auf dem Bildschirm aber stoppen, sobald wir den Autotyp SUV gefunden haben. Hierfür wird in der R-If-else Bedingung das bereits erwähnte Schlüsselwort „break“ eingesetzt.

Schleifendurchläufe von R-For-Loops überspringen – das Schlüsselwort „next“

In manchen Anwendungsfällen kann es hilfreich sein, bestimmte Schleifendurchläufe zu überspringen, anstatt direkt die gesamte Ausführung der For-Loop zu stoppen. Auch hierfür hält die Programmiersprache R mit „next“ ein passendes Schlüsselwort bereit:

cars <- list("limousine", "cabrio", "suv", "supersport", "oldtimer")
for (x in cars) {
	if (x == "suv") {
		next
}
print(x)
}

Das Codebeispiel von weiter oben wurde nun so modifiziert, dass alle Autotypen aus der Liste außer des SUVs ausgegeben werden sollen. Auch hierfür wird eine If-Bedingung eingesetzt, die überprüft, ob es sich bei dem aktuellen Listenelement um den SUV handelt. Wenn dies der Fall ist, werden die restlichen Anweisungen des Schleifenrumpfs übersprungen und die Ausführung der R-For-Loop wird fortgesetzt.