7  Datentypen

R ist eine objektorientierte Sprache und kann verschiedene Formen von Datenklassen und -typen verarbeiten. Die für uns wichtigsten Datentypen sind:

Wir haben in Kapitel 5 schon zwei Datentypen kennengelernt, zum einen den Typ numerisch, denn wir haben den Variablen x, y und z jeweils Zahlenwerte zugeordnet, mit denen wir rechnen konnten.

# numerischer Datetyp 
v_num <- c(0, 8, 15)

# rechnen ist möglich 
v_num * 100
## [1]    0  800 1500

Zum anderen hatten wir der Variable b Wörter zugewiesen. Dies entspricht dem Datentyp “character”.

# Datetyp "Character" 
v_char <- c("Hallo", "ihr", "lieben", "Leute")

# rechnen ist nicht möglich 
v_char * 100
## Fehler in v_char * 100 : nicht-numerisches Argument für binären Operator

Variablen vom Typ logisch enthalten die logischen Aussagen TRUE und FALSE bzw. deren Abkürzungen T und F.

Eine logische Aussage kann zum Beispiel durch einen Vergleich erzeugt werden

# ist 50 = 100 
50==100
## [1] FALSE

Da 50 eben nicht gleich 100 ist, erhalten wir die logische Aussage FALSE zurück.

# ist 50 kleiner als 100 
50<100
## [1] TRUE

Die Zahl 50 ist kleiner als 100, darum erhalten wir die logische Antwort TRUE zurück.

Das kann man auch auf Wertereihen anwenden.

# erzeuge 20 werte 
reihe <- seq(1, 100, 5) 
# ausgeben 
reihe
##  [1]  1  6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96
# Prüfe jeden Wert in "reihe", ob er kleiner als 75 ist 
reihe<75
##  [1]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [13]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
# Prüfe jeden Wert in "reihe", ob er kleiner als 75 ist 
# und speichere das Ergebnis in Variable "logical" 
logical <- reihe<75

# zeige den 7. und 18. Wert von "logical" an 
logical[c(7,18)]
## [1]  TRUE FALSE

Mit der Funktion class() kann der Datentyp (und auch die Datenklasse, dazu später mehr) angezeigt werden.

# welcher Datentyp ist Variable "logical" 
class(logical)
## [1] "logical"
# welcher Datentyp ist Variable "v_char" 
class(v_char)
## [1] "character"
# welcher Datentyp ist Variable "v_num" 
class(v_num)
## [1] "numeric"

Mit den Funktionen is.numeric(), is.logical() und is.character() können wir den Datentyp ebenfalls überprüfen. Als Antwort erhalten wir ein logisches TRUE oder FALSE.

# ist Variable "v_num" numerisch? 
is.numeric(v_num)
## [1] TRUE
# ist Variable "v_num" logical? 
is.logical(v_num)
## [1] FALSE
# ist Variable "v_num" character? 
is.character(v_num)
## [1] FALSE
# ist Variable "logical" character? 
is.character(logical)
## [1] FALSE
# ist Variable "v_char" numerisch? 
is.numeric(v_char)
## [1] FALSE
# ist Variable "v_char" logical? 
is.logical(v_char)
## [1] FALSE
# ist Variable "v_char" character? 
is.character(v_char)
## [1] TRUE
# ist Variable "logical" logical? 
is.logical(logical)
## [1] TRUE