2.4 Objekte und Funktionen

R arbeitet fast ausschließlich mit zwei Dingen: Objekte und Funktionen. Im Folgenden Beispiel definieren wir ein Objekt (5 gemessene Werte der Lufttemperatur) mit der Funktion c().

# Erstelle ein Objekt Lufttemperatur
lt <- c(13.5, 16.7, 18.3, 21.9, 3.9)
# Berechne die mittlere Lufttemperatur 
mean(lt)
## [1] 14.86

Ein Objekt in R kann alles sein, bspw. ein

  • Datensatz (data frames im Englischen; eine Sonderform des data frame ist ein tibble aber dazu später mehr)
  • statistische Zusammenfassung des Datensatzes
  • statistischer Test
  • Einfache Nummern
  • Vektoren (wie in unserem Beispiel die 5 Messungen der Lufttemperatur)
  • Buchstaben und Wörter
  • Faktoren

Diese Objekte können verschiedene Attribute aufweisen, bspw. ein Längenattribut unseres lt Vektors oder bei einem T-Test alle statistischen Parameter.

Was ist eine Funktion?

Eine Funktion greift meist auf ein oder mehrere Objekte zurück (input), führt etwas mit diesen durch, um dann etwas neues dadurch auszugeben (output). Ein Beispiel ist die Funktion um den Mittelwert von einem Vektor auszurechnen mit der Funktion mean().

2.4.1 Neue Objekte erstellen

Einer der wichtigsten Kommandos in R ist der Befehl ein bestimmtes Objekt zuzuweisen mit <-.

# Erstelle ein Objekt mit dem Namen a und weisen ihm einen Satz zu
a <- "Beste Norddeutschland Exkursion der Welt"

Schaue was passiert wenn du a in die Konsole eintippst.

a
## [1] "Beste Norddeutschland Exkursion der Welt"

Was passiert wenn du aa eintippst?

aa

Fehler: Objekt ‘aa’ nicht gefunden

Richtig, wir haben das Objekt aa noch nicht definiert und daher kann es in unserer Arbeitsumgebung (Environment) auch nicht gefunden werden.

Objekte können auch miteinander verbunden werden:

a <- 1
b <- 100
# Was ist a + b?
a+b
## [1] 101
# Weise die Berechnung a + b dem Objekt c zu 
c <- a + b
# Was passiert wenn du c in die Konsole eintippst?
c
## [1] 101

Bei der Bennenung von Objekten gibt es auch Fehlerpotentzial:

# Dies sind falsch benannte Objekte
Luft temperatur <- 23 # Hat ein Leerzeichen
5lufttemperatur <- 23 # Beginnt mit einer Zahl
lufttemperatur! <- 23 # Nicht gültiger character "!"

Darüber hinaus ist es wichtig zu wissen, dass R seeeeEeehr sensibel gegenüber Groß- und Kleinschreibung ist. Die folgenden Objekte sind alle individuell:

# Dies sind drei verschiedene Objekte
test <- 1
TEST <- 100
tEsT <- 1000

💡 Große Buchstaben sollten bei der Benennung von Objekten nach Möglichkeit vermieden werden. Es dauert einfach länger MYDATA oder MyData zu tippen als mydata ohne Umschalttaste.

Einige Dinge die man bei der Benennung von Objekten berücksichtigen sollte:

# Gute Objektnamen
mittelwert <- 2.5
mein_alter <- 32
groesse_in_cm <- 175
# Schlechte Objektnamen
x1 <- 2.5
var2 <- 32
asdasdasd <- 175

Ich persönlich bevorzuge snake_case Wörter. Später lernen wir noch, dass sich diese Wörter durch ein Argument - den Namen Separator name_sep - trennen lassen. Dies wird beim Umstrukturieren von Daten wichtig. Egal welches Schema man auch wählt, einheitlich vorzugehen ist das Wichtigste.

💡 Gute Objektnamen sollten kurz und prägnant sein! Lange Namen sind nicht intuitiv und Buchstaben alleine sagen auch nichts aus. Als Beispiel: Die durchschnittliche Lufttemperatur im Speicherkoog für März kann man mit airtemp_march_koog abkürzen.

Illustration von Allison Horst

Figure 2.11: Illustration von Allison Horst

2.4.2 Beispiel: Umrechnen von °C in K

Der Mittelwert der Jahresdurchschnittstemperatur im Speicherkoog beträgt 10.14 °C. Mit Skalaren kann man einfache Rechenoperationen durchführen.

# Mittelwert der Lufttemperatur in °C
mittel_at <- 10.14
# Lasst uns die Lufttemperatur umrechnen von °C in K
# 0 °C sind 273.15 K
mittel_at + 273.15
## [1] 283.29

Das Jahresmittel der Lufttemperatur beträgt also 283,3 K.

mittel_at
## [1] 10.14

Ups….wieso wird mittel_at denn trotzdem in °C angezeigt ?! Denke daran:

🚨 Um ein Objekt zu ändern, muss es neu zugewiesen werden!

# Zuweisung des Jahresmittels der Lufttemperatur in K anstelle von °C
mittel_at_k <- mittel_at + 273.15
mittel_at_k
## [1] 283.29

Wenn ihr bis hierhin gekommen seid, dann habt ihr schon eine ganze Menge verinnerlicht. Nicht das wir uns schon zurücklehnen wollen, aber ein ein wenig Grund zum Feiern ist es dennoch 🎉🍻.