Grundlegendes R-Wissen

In der Regel wird ein Befehl pro Zeile eingegeben. Kommentare, die den eigenen Code erläutern, werden entweder über den Code geschrieben oder dahinter, immer mit einem # davor. Kommentare sind keine Option, sondern obligatorisch.

Grundlegende Objekte in R sind Vektoren, Listen und Data Frames. Data Frames haben wir bereits im vorherigen Abschnitt kennen gelernt. Vektoren sind eine Art Liste, wobei alle Elemente dieser Liste den gleichen Datentyp haben müssen. In Listen ist das nicht der Fall, ein Element kann ein Text sein, das nächste Element eine Zahl. Data Frames sind im Grunde genommen eine Liste mit Vektoren gleicher Länge

Es können einfache Ausdrücke wie 2+2 oder 2*3 eingegeben werden, die R sofort ausrechnet. Das Ergebnis eines Ausdrucks kann in einer Variable gespeichert werden und diese dann für weitere Operationen verwendet werden. Wer bereits eine andere Programmiersprache kennt, der wundert sich vielleicht, dass die Variable hier nicht zuvor deklariert werden musste. Generell können wir zwischen drei Datentypen unterscheiden: numerisch, alphanumerisch und logisch. Numerisch ist weiter unterteilt in integer und double (Fließkommazahlen wie 1,5322745), wobei der Datentyp numeric weiterhin besteht, man muss sich hier nur nicht festlegen. Ein Spezialfall ist der Typ factor, da hier kategoriale Daten gespeichert werden. R ist relativ entspannt, was Datentypen betrifft, was allerdings auch zu Fehlern führen kann. Die Modi oder Datentypen in R (generell Datentypen in Programmiersprachen) sind daher wichtig zu verstehen, denn wenn Daten verarbeitet werden, dann entstehen unerwartete Ergebnisse, sofern eine Operation auf einem nicht geeigneten Datentyp ausgeführt wird. Dies ist ein häufiger Fehler.  Glücklicherweise findet in R eine dynamische Typisierung statt, so dass Daten während der Laufzeit einen anderen Typen bekommen können. Dies ist zugleich allerdings auch eine Fehlerquelle.

Einige nützliche Befehle, am Beispiel von dem Datensatz cars:

  • head(cars): Zeigt die ersten 10 Zeilen eines Datensatzes an
  • str(cars): Zeigt die Struktur eines Objekts an. ‘data.frame’: 50 obs. of 2 variables besagt, dass es sich um einen Data Frame handelt mit 50 Observationen und zwei Merkmalen bzw 2 Variablen. Darunter werden die Typen (Modi) der Variablen und die ersten Werte angezeigt.
  • mode(cars$speed): Zeigt den Modus eines Objekts an. In diesem Fall wurde nicht der ganze Datensatz cars verwendet, sondern nur eine Variable, speed. Einzelne Spalten werden ausgewählt, indem hinter den Data Frame ein $ und dann der Variablenname gesetzt wird, in diesem Fall cars$speed. Gibt man cars$speed in der Konsole ein, so werden die Werte dieser Variable angezeigt.
  • summary(cars): Berechnet Statistiken für alle Variablen eines Data Frames.
  • hist(cars$speed): Erstellt ein Histogramm einer Variable.
  • getwd(): Zeigt das gegenwärtige Arbeitsverzeichnis an, setwd() setzt es
  • cor.test(cars$speed,cars$dist): Berechnet die Korrelation zwischen zwei Variablen.

HIer ein Beispiel für eine Fehlerquelle durch falsche Datentypen: Es soll eine Korrelation berechnet werden zwischen zwei Variablen, aber die eine Variable wurde nicht als numerischer Wert, sondern als alphanumerischer Wert importiert. Das Resultat ist eine Fehlermeldung. Versuchen Sie zum Beispiel cor.test(cars$speed,as.character(cars$dist)) einzugeben; hier wird die Variable cars$dist umgewandelt in alphanumerische Werte, so dass der Korrelationstest eine Fehlermeldung ausspuckt.

Ein Wort noch zu CSV-Dateien: Diese sind auch eine häufige Fehlerquelle, da nicht alle CSV-Dateien tatsächlich Komma-separiert sind. Manche sind auch Semikolon-separiert oder Tab-separiert (und müssten dann eigentlich TSV-Dateien sein). Es empfiehlt sich also vorher zu schauen, wie die Datei tatsächlich aussieht