Kurs

Die Funktion "ifelse()" ist die kompakte Alternative zur klassischen if-else-Anweisung in R. Sie ist zudem vektorisiert, was die Ausführung beschleunigt: Statt einzelne Werte mehrfach zu prüfen, verarbeitet sie den gesamten Vektor in einem Rutsch.
Syntax
Die Syntax der Funktion "ifelse()" in R lautet:
ifelse(logical_expression, a, b)
Die Argumente bedeuten:
1. logical_expression: Liefert einen logischen Vektor zurück; die Ausgabe hat dieselbe Länge wie die Eingabe.
2. a: Wird verwendet, wenn logical_expression TRUE ist.
3. b: Wird verwendet, wenn logical_expression FALSE ist.
Beispiel (Ungerade oder Gerade)
Schauen wir uns schnell ein Beispiel an, das prüft, ob Zahlen ungerade oder gerade sind. "v" ist ein Vektor mit einer Liste von Zahlen. In der Funktion "ifelse" prüft der Ausdruck "v%%2==1" für jedes Element in "v", ob der Rest 1 ist. Ist die Bedingung TRUE, wird "odd" ausgegeben, andernfalls bei FALSE "even".
v = c(14,7,6,9,2)
ifelse(v %% 2 == 1,"odd","even")
- 'even'
- 'odd'
- 'even'
- 'odd'
- 'even'
Der obige Code liefert als Ausgabe:
'even' 'odd' 'even' 'odd' 'even'
Die interne Auswertung erzeugt zunächst den logischen Vektor c(FALSE, TRUE, FALSE, TRUE, FALSE). Der erste Parameter bildet daraus einen Zeichenkettenvektor c("odd","odd","odd","odd","odd"), der zweite Parameter entsprechend c("even","even","even","even","even"). Schließlich werden die Positionen mit TRUE durch 'odd' und die mit FALSE durch 'even' ersetzt.
Beispiel (Bestanden oder Durchgefallen)
Das nächste Beispiel zeigt die Verwendung von "ifelse()" zusammen mit einem DataFrame. Erreicht eine Studentin oder ein Student mehr als 40 Punkte, gilt das Ergebnis als "Pass", sonst als "Fail".
Erstellen wir dafür einen Data Frame: Die Spalte "Student" enthält die Namen ("Ron", "Jake", "Ava", "Sophia", "Mia"). Die Spalte "Marks" enthält die Punkte (35, 75, 45, 30, 85). Beide Spalten werden zu einem Data Frame kombiniert und in 'x' gespeichert.
x <- data.frame("Student" = c("Ron","Jake","Ava","Sophia","Mia"),"Marks" = c(35,75,45,30,85))
str(x)
'data.frame': 5 obs. of 2 variables:
$ Student: Factor w/ 5 levels "Ava","Jake","Mia",..: 4 2 1 5 3
$ Marks : num 35 75 45 30 85
'data.frame': 5 obs. of 2 variables:
$ Student: Factor w/ 5 levels "Ava","Jake","Mia",..: 4 2 1 5 3
$ Marks : num 35 75 45 30 85
Der Code oben zeigt mit "str(x)" die Struktur des Data Frames: 5 Beobachtungen, 2 Variablen, mit den jeweiligen Werten in den Spalten Student und Marks.
x$Result = ifelse(x$"Marks">40,"Pass","Fail")
print(x)
Die Ausgabe sieht so aus:
Student Marks Result
1 Ron 35 Fail
2 Jake 75 Pass
3 Ava 45 Pass
4 Sophia 30 Fail
5 Mia 85 Pass
Im Code oben wird mit der Variablen 'x$Result' eine neue Spalte "Result" zum Data Frame hinzugefügt. Die Funktion "ifelse()" verwendet den Ausdruck 'x$"Marks">40', prüft die Werte in Marks und setzt das "Result" auf "Pass", wenn Marks größer als 40 ist, andernfalls auf "Fail".
Glückwunsch
Glückwunsch, du hast das Ende dieses Tutorials erreicht!
Du hast die ifelse()-Funktion in R mit ihrer Syntax kennengelernt, gesehen, wie du damit gerade und ungerade Zahlen bestimmst, und anhand eines Beispiels geprüft, ob eine Studentin oder ein Student bestanden oder durchgefallen ist.
Wenn du mehr über R lernen möchtest, findest du hier all unsere R-Ressourcen.
Schau dir auch unser Tutorial Using Functions in R an.
