Direkt zum Hauptinhalt springen
eLearner.app
Modul 2 · Lektion 2 von 24/10 im Kurs~12 min
Lektionen des Moduls (2/2)

Bedingungen und Schleifen

Um komplexe Algorithmen und Abläufe in R zu implementieren, müssen Sie steuern können, welche Anweisungen ausgeführt und wie oft sie wiederholt werden.

Bedingte Anweisungen

In R basiert die grundlegende bedingte Struktur auf if und else. Die Syntax ähnelt stark der von Sprachen wie JavaScript oder C:

Code
score <- 85

if (score >= 60) {
  print("Superato!")
} else {
  print("Non superato.")
}

Die geschweiften Klammern {} begrenzen die Codeblöcke, die je nach Ergebnis des booleschen Ausdrucks in runden Klammern ausgeführt werden sollen.

Die for-Schleife

Die for-Schleife in R wird verwendet, um über Elemente einer Sequenz (wie einen Vektor oder eine Liste) zu iterieren.

Code
# Gibt die Zahlen von 1 bis 3 aus
for (i in 1:3) {
  print(i)
}

In R ist die Syntax 1:3 eine Abkürzung zur Erstellung des Vektors c(1, 2, 3).

Wir können auch direkt die Elemente eines vorhandenen Vektors durchlaufen:

Code
fruits <- c("apple", "banana", "cherry")

for (fruit in fruits) {
  print(fruit)
}

Die Funktion ifelse

In R ist die Funktion ifelse() eine vektorisierte Version des if-else-Konstrukts. Sie ermöglicht es, eine Bedingung in einer einzigen Operation auf einen gesamten Vektor anzuwenden, und gibt einen Vektor von Ergebnissen zurück.

Code
scores <- c(55, 80, 45, 90)
# Wenn score >= 60 weise "Pass" zu, andernfalls "Fail"
results <- ifelse(scores >= 60, "Pass", "Fail")
print(results) # "Fail" "Pass" "Fail" "Pass"

Die while-Schleife

Die while-Schleife wird verwendet, um einen Codeblock so lange zu wiederholen, wie eine bestimmte Bedingung wahr (TRUE) bleibt. Es ist wichtig sicherzustellen, dass die Bedingung irgendwann falsch wird, um Endlosschleifen zu vermeiden.

Code
counter <- 1
while (counter <= 3) {
  print(counter)
  counter <- counter + 1
}

Probier es aus

Übung#r.m2.l2.e1
Versuche: 0Wird geladen…

Schreibe eine bedingte if-else-Struktur, die prüft, ob die Variable score größer oder gleich 60 ist. Wenn ja, setze status auf 'Pass', andernfalls auf 'Fail'.

Editor wird geladen…
Hinweis anzeigen

Prüfe score >= 60 und weise status <- 'Pass' oder status <- 'Fail' zu

Lösung nach 3 Versuchen verfügbar

Übung#r.m2.l2.e2
Versuche: 0Wird geladen…

Schreibe eine for-Schleife, die über die Sequenz 1:5 iteriert und jeden Wert mit der Funktion print() ausgibt.

Editor wird geladen…
Hinweis anzeigen

Verwende die Syntax: for (i in 1:5) { print(i) }

Lösung nach 3 Versuchen verfügbar

Übung#r.m2.l2.e3
Versuche: 0Wird geladen…

Schreibe für den gegebenen Vektor v eine for-Schleife, die über jedes Element iteriert und dessen doppelten Wert (val * 2) mit print() ausgibt.

Editor wird geladen…
Hinweis anzeigen

Durchlaufe die Elemente von v: for (val in v) { print(val * 2) }

Lösung nach 3 Versuchen verfügbar

Übung#r.m2.l2.e4
Versuche: 0Wird geladen…

Verwende für den gegebenen Vektor scores die Funktion ifelse(), um zu prüfen, welche Elemente größer oder gleich 60 sind. Speichere das Ergebnis (das für jedes Element 'Pass' oder 'Fail' enthält) in der Variable results.

Editor wird geladen…
Hinweis anzeigen

Verwende die Funktion: results <- ifelse(scores >= 60, 'Pass', 'Fail')

Lösung nach 3 Versuchen verfügbar

Übung#r.m2.l2.e5
Versuche: 0Wird geladen…

Verwende eine while-Schleife, um den Wert von x so lange zu verdoppeln, bis er 50 überschreitet. Erhöhe bei jeder Iteration auch die Variable counter.

Editor wird geladen…
Hinweis anzeigen

Verwende eine while-Schleife (x <= 50) und aktualisiere sowohl x als auch counter innerhalb der geschweiften Klammern.

Lösung nach 3 Versuchen verfügbar