Im letzten Post (http://r-coding.de/blog/r-und-rstudio) bin ich erst einmal auf die Installation von R & RStudio und die Benutzeroberfläche vom letzteren eingegangen. Heute geht es um einige Basics von R selbst. Am Ende des Posts findet ihr den gesamten Code zum herunterladen.
Kurze Wiederholung vom letzten Mal
Grundsätzlich kann man die Konsole in R wie einen Taschenrechner benutzen. Gibt man zum Beispiel 40 + 2
ein, so wird 42
als Antwort erscheinen. Wir wollen uns aber angewöhnen, alles in eine eigene R-Datei zu schreiben, da man so alle Befehle problemlos wiederholen kann. Ein guter Grundsatz ist daher: Alle Schritte immer in ein Skript schreiben; die Konsole nur explorativ benutzen (z.B. um etwas auszuprobieren oder nach bestimmten Werten in Objekten zu suchen). Wir öffnen also eine neue R-Datei (Strg+Shift+N) und speichern sie (Strg+S) z.B. als „first-steps.R“ in einen für uns passenden Ordner.
Die ersten Zeilen
Ordnung und Übersichtlichkeit sind beim Programmieren sehr wichtig – vor allem dann, wenn ein Projekt groß werden sollte und eine zweistellige Anzahl an Quelldateien benötigt. Dementsprechend ist es sehr zu empfehlen, einen festen Programmierstil zu verfolgen. So etwas ergibt sich meist mit Erfahrung und „den einen perfekten Stil“ gibt es hierbei nicht. Nichtsdestotrotz gibt es gute Richtlinien, die einem auf lange Sicht sehr viel Arbeit ersparen. So empfehle ich immer einen sogenannten „Header“ in jede Datei zu schreiben, der kurz erklärt, worum es in der Datei geht (was sie enthält, ggf. zu welchem Projekt sie gehört, …). Dies kann man in R wunderbar mit Kommentaren machen. Ein Kommentar wird mit ‚#‘ eingeleitet. Die Raute und alles was dahinter steht wird hierbei nicht vom R Interpreter beachtet (der Interpreter ist dafür verantwortlich, den R-Code zu „übersetzen“ und auszuführen). Ist die Raute also erstes Zeichen in einer Zeile, wird die gesamte Zeile ignoriert, egal was hinter der Raute steht. Ein übersichtlicher Header ist im Code am Ende des Posts zu sehen.
Als nächstes ist es wichtig, die sogenannte working directory (das Arbeitsverzeichnis) zu setzen. Das ist der Pfad, auf den sich das Skript von nun an bezieht. Speichert man zum Beispiel bestimmten Output in eine Datei, z.B. mit write.csv(data, "meineDatei.csv")
, so wird diese Datie in der working directory gespeichert. Die working directory ist darüber hinaus wichtig um andere R-Dateien einzubinden oder wenn Dateien gelesen werden sollen. Man kann das Arbeitsverzeichnis mit setwd(path)
setzen. Beispiel: setwd("C:/R-Coding/First Steps")
. Hinweis: R ist case-sensitive; Groß-/Kleinschreibung wird also beachtet und SETWD(path)
oder Setwd(path)
würden nicht funktionieren.
Vektoren
Nun sind wir soweit und lernen die einfachsten Objekte in R kennen. Vektoren sind eindimensionale Datenstrukturen, deren Elemente von einem bestimmten Datentyp sind (z.B. Ganzzahlen oder Zeichenketten). Der einfachste Vektor enthält nur ein Element. Beispiel: myVector <- 12.345 #numeric vector with one element
. In diesem Beispiel wird dem Objekt myVector über den Zuweisungsoperator "<-" der Wert 12.345 zugewiesen. Möchten wir ein Vektor mit mehreren Elementen erstellen, können wir die c(...)-Funktion benutzen. Das c steht hierbei für concatenate, was als "verbinden" oder "verketten" übersetzt werden kann. Beispiel: fruitVector <- c("Apple", "Orange", "Banana") #vector containing three typical fruit names
. In diesem Beispiel ist das Objekt fruitVector ein character vector (d.h., er enthält Zeichenketten) mit drei Elementen. Wir können die Länge eines Vektors mit der length(...)-Funktion ausgeben lassen: length(fruitVector)
. Um ein bestimmtes Element in einem Vektor anzusprechen, benutzen wir die eckigen Klammern: fruitVector[2]
. In diesem Beispiel wird das zweite Element von fruitVector angezeigt. Achtung: Versucht man ein nicht existierendes Element auszuwählen, so erhält man ein NA ("not available"). Beispiel: fruitVector[4]
. Für die kommenden Beispiele erstellen wir noch einen numerischen Vektor mit fünf Elementen: numVector <- c(1.5, 3.2, 8.5, 0.9, 4.8)
.
Grundfunkionen für Vektoren
Es gibt viele Funktionen, die wir auf Vektoren anwenden können. Wir haben schon length(...) kennengelernt. Im Folgenden sind weitere nützliche Funktionen gelistet:
- rev: steht für "reverse" und kehrt den Vektor um. Beispiel: rev(fruitVector)
.
- sort: sortiert den Vektor aufsteigend. Bei Zeichenketten alphabetisch, Beispiel: sort(fruitVector)
.
- sum: summiert alle Elemente im Vektor, funktioniert nicht für Zeichenketten. Beispiel: sum(numVector)
.
- abs: gibt absolute Werte zurück: Beispiel: abs(numVector)
.
- diff: errechnet die Differenzen zwischen Elementen. Beispiel: diff(numVector)
.
- mean: berechnet den Mittelwert. Beispiel: mean(numVector)
.
- median: berechnet den Median. Beispiel: median(numVector)
.
- sd: steht für "standard deviation und berechnet die Standardabweichung. Beispiel: sd(numVector)
.
- var: berechnet die Varianz. Beispiel: var(numVector)
.
- summary: zeigt eine 5-Number-Summary plus Mittelwert an: summary(numVector)
.
Dies sind nur einige der Funktionen, die hilfreich sein können. Weiteren werden wir ganz bestimmt im Laufe der Zeit begegnen :). Im Code unten habe ich noch ein paar zusätzliche Zeilen eingebaut, die zukünftige Blogposts vorwegnehmen (z.B. das Verschachteln von Funktionen), die aber schon ganz hilfreich sein können und demonstrieren, was man mit R alles machen kann. Schreibt mir gerne, wenn ich in naher Zukunft ein bestimmtes Thema behandeln soll.
Bis denn!