Schleifen in R

Schleifen in R

Statistische Beratung

Schleifen in R

Gibt es Schleifen in R? Wie sieht die Syntax aus? Welche Besonderheiten sind bei Inkrement und Dekrement zu beachten? Diese Fragen möchten wir hier beantworten.

Sie benötigen Hilfe rund um das Thema Statistik? Fragen Sie unser Expertenteam.

Schleifen gehören zu den grundlegenden Elementen der Programmierung. Sie ermöglichen es, Code wiederholt auszuführen. Eine typischen Anwendung in der Statistik wäre das wiederholte Subtrahieren des Mittelwertes bei der Berechnen der Varianz.

Bei der Anwendung von Schleifen spielen das Inkrement (das schrittweise Erhöhen eines Variablenwertes) sowie das Dekrement (das schrittweise Verringern eines Variablenwertes) eine entscheidende Rolle.

Da sich die Schleifen in R teilweise von anderen modernen Programmiersprachen wie Java unterscheiden, wird in diesem Beitrag neben der Syntax in R auch der grundsätzliche Aufbau der Schleifen in der Sprache Java demonstriert. So werden die Besonderheiten der R-Variante im Vergleich zu anderen Sprachen deutlich. Die Java-Variante findet sich jeweils in einer Klappbox unter der R-Syntax.

Grundsätzlich lassen sich drei Formen von Schleifen unterscheiden:

  • die for-Schleife
  • die while-Schleife
  • die do-while-Schleife

Die for-Schleife

Sinn und Zweck der for-Schleife ist es, einen Code n mal auszuführen. Die Variable n ist hierbei eine ganze Zahl (englisch integer) und in der Regel beim Start der Schleife mit einem festen Wert definiert.

In R stellt sich die for-Schleife so dar:

n <- 5
for(i in 0:n) {
   print(i);
}

Der Variablen n wird wieder der Wert 5 zugewiesen. Das Inkrement wird hier durch 0:n gebildet. An dieser Stelle wird der Startwert der Variablen i auch auf 0 definiert. Eine gesonderte Inkrementierung ist bei dieser Form der Schleife nicht erforderlich. Die Bildschirmausgabe lautet hier:

0
1
2
3
4
5

Java

Unter Java stellt sich die for-Schleife folgendermaßen dar:

int n = 5;
for(int i=0; in; i++) {
   System.out.println(i); 
}

Der Variablen n wird der Wert 5 zugewiesen. Die eigentliche Schleife beginnt beim Ausdruck for. Die Parameter für die Schleife folgen in Klammern (). Die inkrementierte Variable wird mit i deklariert und mit einem Startwert von 0 definiert. Es folgt die Abbruchbedingung i

Es folgt das Inkrement i++. Dieses bewirkt, dass der Wert der Variable i bei jedem Durchlauf der Schleife um den Wert 1 erhöht wird. Die Anweisung, die innerhalb der Schleife ausgeführt werden soll, folgt in geschweiften Klammern {}. In diesem Beispiel wird der Wert der Variablen i ausgegeben.

Die Ausgaben auf dem Bildschirm:

0
1
2
3
4

            

Das Dekrement (Rückwärtszählen).

In R lautet die for-Schleife mit Dekrement:

n <- 0
for(i in 5:n) {
   print(i);
}

Die Bildschirmausgabe lautet:

5
4
3
2
1
0

Java

Das Dekrement geschieht in Java über den Befehl i–:

int n = 0;
for(int i=5; in; i--) {
   System.out.println(i); 
}

Die Variable n wird hier mit dem Wert 0 definiert, die Variable i mit dem Wert 5. Die Bildschirmausgabe lautet:

5
4
3
2
1

Auch hier wird wieder ein zusätzlicher Wert gegenüber der Java-Variante ausgegeben. Das Dekrement wird durch 5:n gebildet. An dieser Stelle wird die Variable i auch wieder definiert, dieses mal mit dem Wert 5.

Ob inkrementiert (hochgezählt) oder dekrementiert (runtergezählt) wird in R automatisch erkannt. In m:n bildet m den Startwert, n den Stoppwert. Die for-Schleife ist damit in R komfortabel nutzbar. Etwas unkomfortabler wird es bei der while-Schleife.

Die while-Schleife

Die while-Schleife dienst grundsätzlich dazu, einen Code so lange auszuführen, wie eine bestimmte Bedingung erfüllt ist. Die Syntax der while-Schleife in R lautet:

i <- 0 
while (i < 5) {
   i = i+1;
   print(i);
}

Die Variable i wird mit dem Wert 0 definiert. Die Schleife läuft, so lange i kleiner 5. Hier fällt auf, dass das Inkrement mit i = i+1 erfolgt (++ und — sind in R grundsätzlich nicht bekannt). Die Ausgabe lautet:

1
2
3
4

Java

Die Java-Variante der while-Schleife lautet:

int i = 0;
while (i < 5) {
   System.out.println(i);
   i++;
}

Die Schleife wird ausgeführt, solange i kleiner 5 ist. Bei jedem Durchlauf wird der Wert der Variablen inkrementiert. Die Bildschirmausgabe lautet:

0
1
2
3
4

Das Inkrementieren der Variablen i muss nicht zwangsläufig innerhalb der Schleife geschehen. Auch ist die while-Schleife grundsätzlich nicht an ein Inkrement oder Dekrement gebunden. Eine typische Anwendung besteht im Ausführen von Code, solange eine bestimmte Eingabe getätigt wird. Da sich dieser Beitrag auf das Demonstrieren der Syntax beschränkt, wird die Abbruchbedingung hier jedoch innerhalb der Schleife dargestellt.

Die do-while-Schleife

Die while-Schleife ist kopfgesteuert. Das heißt, bei jedem Durchlauf wird am Anfang (am Schleifenkopf) die Bedingung geprüft, die erfüllt sein muss, damit die Schleife ausgeführt wird. Unter bestimmten Umständen kann es jedoch sinnvoll sein, am Schleifenfuß die Bedingung zu prüfen, unter der die Schleife ausgeführt wird. Diese Anforderung erfüllt die do-while-Schleife.

Ein der do-while-Schleife ähnliches Gebilde gibt es in R als repeat-Schleife. Die Syntax lautet:

i <- 0
repeat {
   print(i);
   i = i+1;
   if(i > 5) break;
}

Die Bildschirmausgabe lautet:

0
1
2
3
4
5

Java

Die Syntax der do-while-Schleife in Java lautet:

int i = 0;
do {
   System.out.println(i);
   i++;
}
while(i<5);

Die Bildschirmausgabe lautet:

0
1
2
3
4

In der Java-Variante sind zwei weiterführende Elemente der Programmierung eingebettet. Die Befehle if und break. Der Befehl if gehört zusammen mit else und else if zu den wichtigsten Möglichkeiten, Bedingungen abzuprüfen und zu verzweigen. Der Befehl break gehört zusammen mit continue zu wichtigen Erweiterungen für Schleifen. Hierüber lassen sich umfangreiche Schleifenkonstruktionen erzeugen. Hierauf soll jedoch in einem späteren Beitrag eingegangen werden.

Grundsätzlich lassen sich auch in R Schleifen effizient einsetzen, um Abläufe zu steuern und zu automatisieren.

1 Antwort
  1. cricket betting exchange software
    cricket betting exchange software says:

    I don’t know whether it’s just me or if everyone else experiencing problems with your blog.
    It looks like some of the written text on your content are running off the screen. Can somebody else
    please provide feedback and let me know if this is happening to them as well?
    This may be a issue with my internet browser because I’ve had this happen previously.
    Kudos

    Antworten

Dein Kommentar

Want to join the discussion?
Feel free to contribute!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.