Statistik

R-Kurs · Kapitel 9 · R als Programmiersprache

R als Programmiersprache

Nützliche eingebaute Funktionen

R
x <- c(4, 8, 15, 16, 23, 42)
sum(x); prod(x)        # Summe, Produkt
sort(x); rev(x)        # sortieren, umkehren
cumsum(x)              # kumulierte Summe
which.max(x)           # Position des Maximums
Ausgabe
[1] 108
[1] 7418880
[1]  4  8 15 16 23 42
[1] 42 23 16 15  8  4
[1]   4  12  27  43  66 108
[1] 6

Eigene Funktionen

Eine Funktion bündelt wiederverwendbare Schritte. Argumente stehen in (), der letzte Ausdruck ist der Rückgabewert:

R
geom.Mittel <- function(x){
n <- length(x)
prod(x)^(1/n)     # Rückgabewert
}
geom.Mittel(c(2, 8, 4))
Ausgabe
[1] 4
Mini-Aufgabe

Schreibe eine Funktion spannweite(x), die die Spannweite (Max − Min) eines Vektors zurückgibt, und teste sie mit c(3, 7, 2, 9, 5).

💡 Tipp

Der letzte Ausdruck max(x) - min(x) ist automatisch der Rückgabewert.

Lösung zeigen
R
spannweite <- function(x){
max(x) - min(x)
}
spannweite(c(3, 7, 2, 9, 5))
Ausgabe
[1] 7

Verzweigungen und Schleifen

if/else verzweigt, for wiederholt. Für elementweise Bedingungen auf Vektoren ist ifelse() praktisch (vektorisiert):

R
bewerten <- function(note){
if (note <= 4) "bestanden" else "durchgefallen"
}
bewerten(3)
# vektorisiert:
noten <- c(1, 4, 5, 2)
ifelse(noten <= 4, "ok", "nicht ok")
Ausgabe
[1] "bestanden"
[1] "ok"     "ok"     "nicht ok" "ok"
Mini-Aufgabe

Schreibe eine Funktion ist.gerade(n), die TRUE zurückgibt, wenn n gerade ist (Tipp: Modulo %%).

Lösung zeigen
R
ist.gerade <- function(n){
n %% 2 == 0
}
ist.gerade(10)
ist.gerade(7)
Ausgabe
[1] TRUE
[1] FALSE

Abruf-Quiz

Frage 1 / 2

Was gibt eine R-Funktion ohne explizites return() zurück?