Wie man in R programmiert

2.1 Code in R schreiben

R ist eine interpretierte Sprache (engl. interpreted language), das heißt, Sie müssen Befehle eingeben, um Operationen (zum Beispiel Berechnungen) auszuführen. Programmieren oder Coden bedeutet, Befehle zu schreiben. Auf Ihre Anweisung hin versucht R, diese Befehle auszuführen. Dieses Kapitel gibt einen Überblick über die Sprache R. Sie lernen, wie grundlegende Operationen ausgeführt und interpretiert werden.

Datenanalyse bedeutet, dass Sie den Arbeitsspeicher und die mathematischen Funktionen des Computers nutzen, um Daten zu speichern, Daten zu bearbeiten und Berechnungen durchzuführen. Computer sind kompliziert. R ist einfach. Sie lernen also nur die Grundlagen dessen, wie R mit Ihrem Computer zusammenarbeitet. Im Grunde weisen Sie R (durch das Ausführen von R-Befehlen) an, Ihren Computer Operationen ausführen zu lassen. Hier ist eine sehr einfache Operation, bei der wir den Computer bitten, die Zahlen 1+9 zu addieren.

1+9
[1] 10

Wie Sie oben in der Ausgabe sehen, gibt R den Wert 10 als erstes Ergebnis zurück (gekennzeichnet durch 11). In diesem Beispiel haben wir keine Information gespeichert, hätten es aber tun können. Betrachten Sie das nächste Beispiel, in dem wir zunächst die Zahl 1 in einem Objekt namens mynumber und die Zahl 9 in einem Objekt namens your_number speichern. Wir verwenden den speziellen R-Operator <-, um die Zahlen den Objekten zuzuweisen. Der Operator <- wird „gets“ ausgesprochen. Anschließend addieren wir diese Zahlen und erhalten dasselbe Ergebnis wie oben:

my_number <- 1
your_number <- 9
my_number + your_number
[1] 10

Im zweiten Beispiel haben wir den Wert 1 im Arbeitsspeicher unseres Computers gespeichert. Dies geschah, indem wir 1 einem R-Objekt zugewiesen haben, das wir my_number genannt haben. my_number ist also ein R-Objekt. Sie können jederzeit auf das Objekt zugreifen, da es im Arbeitsspeicher des Computers gespeichert ist.

Was würde passieren, wenn Sie your_number mit 10 multiplizieren? Probieren wir es aus:

10*your_number
[1] 90

Das Ergebnis ist 90. R hat die Zahl 9 im Arbeitsspeicher des Computers gespeichert und multipliziert diese Zahl nun mit 10, was 90 ergibt. Dividieren wir die Zahlen stattdessen:

my_number/your_number
[1] 0.1111111

Sie können R tatsächlich als Taschenrechner verwenden, wie dieses Beispiel zeigt:

(100-(10*9))/2
[1] 5

Probieren wir ein neues Beispiel, in dem wir R anweisen, alle Zahlen zwischen 1 und 100 auszugeben. Dies geschieht mit dem Doppelpunkt-Operator (:), der R anweist, eine Folge ganzer Zahlen von 1 bis 100 zu erzeugen:

1:100
  [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18
 [19]  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36
 [37]  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54
 [55]  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72
 [73]  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90
 [91]  91  92  93  94  95  96  97  98  99 100

Sie werden bemerken, dass die erste Zahl jeder Zeile in Klammern steht (11, 1818, 3535, 5252, 6969, 8686). Diese Zahlen sind lediglich Indikatoren, die angeben, mit welchem Wert die Zeile beginnt. Die zweite Zeile beginnt also mit dem 18. Wert der Folge. Die in Klammern angezeigten Zahlen können Sie in der Regel ignorieren.

2.2 Unvollständige Befehle

Wenn Sie einen unvollständigen Befehl eingeben und die Eingabetaste drücken, zeigt R in der nächsten Zeile den +-Prompt an. Das bedeutet, dass R darauf wartet, dass Sie den Rest Ihres Befehls eingeben. Vervollständigen Sie entweder den Befehl oder drücken Sie Escape, um von vorn zu beginnen. Im folgenden Beispiel geben wir in der ersten Zeile 5- ein und drücken die Eingabetaste. R zeigt in der nächsten Zeile den +-Prompt an, damit wir angeben können, was wir von der Zahl 5 subtrahieren möchten. Wir geben die Zahl 1 ein und drücken die Eingabetaste, was die Zahl 4 ergibt.

> 5 -
+
+ 1
[1] 4

2.3 Befehle abbrechen

Manche R-Befehle können lange Zeit zur Ausführung benötigen. Sie können einen Befehl, sobald er gestartet wurde, mit Strg + C abbrechen. Beachten Sie, dass es auch einige Zeit dauern kann, bis R den Befehl abbricht.

2.4 Fehlermeldungen

Code, der aus welchem Grund auch immer nicht funktioniert, gibt Fehler zurück. Ein Fehler bedeutet einfach, dass R den Befehl nicht interpretieren kann. Fehler müssen behoben werden, indem der Code korrigiert wird. Die meisten Fehler beruhen auf einfachen Tippfehlern beim Programmieren, sie können aber durchaus komplexer sein. Fehlern geht „Fehler in…“ voraus, gefolgt von einer Erklärung, die bei der Behebung des Fehlers hilfreich sein kann oder auch nicht. Wir geben nun einen Befehl mit einem Tippfehler ein:

librar(tidyverse)
Error in librar(tidyverse) : could not find function "librar"

Der Fehler beruht darauf, dass wir library als library falsch geschrieben haben. Der richtige Befehl lautet:

library(tidyverse)

2.5 Code kommentieren

Es ist wichtig, laufend Kommentare in den Code zu schreiben. Fast alle Programmiersprachen erlauben es, Kommentare mithilfe spezieller Symbole zu schreiben. R verwendet für Kommentare das Rautezeichen (#). Alles, was in einer Zeile auf ein Rautezeichen folgt, wird von R ignoriert. Kommentare werden also nur von Menschen gelesen, niemals vom Computer.

2.6 Warnungen und Meldungen

  • Warnungen: Manchmal gibt Ihr Code eine Warnung zurück. Das bedeutet, dass die Befehle ausgeführt wurden, aber etwas Ihre Aufmerksamkeit erfordert. Wenn Sie beispielsweise ein Diagramm erstellen und einige Werte fehlen, erhalten Sie möglicherweise eine Warnung wie: Warnung: 13 Zeilen mit fehlenden Werten entfernt. Diese Warnung weist Sie also lediglich darauf hin, dass die Darstellung möglicherweise nicht alle Beobachtungen in Ihren Daten wiedergibt.
  • Meldungen: Meldungen enthalten harmlose Informationen. Wenn Sie beispielsweise ein Package laden, erhalten Sie möglicherweise eine Meldung mit Informationen zu Package-Updates, Version usw.

2.7 Vektoren (Vectors)

Ein Vektor ist eine Folge von Datenelementen desselben Grundtyps. Vektoren sind in R wichtig, und an ihnen ist nichts kompliziert. Hier ist ein Vektor, der die Zahlen 1, 2, 3, 4 und 5 enthält. Wir erzeugen den Vektor mit der Funktion c (), wobei c für „combine“ (kombinieren) steht.

c(1, 2, 3, 4, 5)
[1] 1 2 3 4 5

Wir hätten etwas Platz sparen können, indem wir den Doppelpunkt-Operator (:) verwenden:

c(1:5)
[1] 1 2 3 4 5

Und hier ist ein Vektor aus Zeichenketten.

c("David", "Maria", "Mohamed", "Singh", "Lana")
[1] "David"   "Maria"   "Mohamed" "Singh"   "Lana"

2.8 Objekte (Objects)

In den Beispielen oben haben wir Vektoren erzeugt, sie aber nie im Arbeitsspeicher unseres Computers gespeichert. Um sie zu speichern, müssen wir ein R-Objekt erstellen, was wir mit dem Zuweisungsoperator <- tun. Wir erstellen nun ein Objekt namens my_numbers:

my_numbers <- c(1, 2, 3, 4, 5)

Wir haben nun ein R-Objekt (my_numbers), das wir erneut verwenden und bearbeiten können. Was ist ein R-Objekt? Nur ein Name, mit dem Sie auf gespeicherte Daten verweisen können. Wenn Sie den Objektnamen in Ihrem R-Code verwenden, ersetzt R den Objektnamen durch die im Objekt gespeicherten Daten. Betrachten Sie das folgende Beispiel, in dem wir die Zahl 100 in einem Objekt namens my_number speichern, anschließend my_number als Befehl eingeben und die Eingabetaste drücken.

my_number &lt;- 100
my_number
[1] 100

2.8.1 Wie man Objekte in R erstellt

Um ein R-Objekt zu erstellen, wählen Sie einen Namen und verwenden dann den Zuweisungsoperator <-, um ihm Daten zu übergeben. Diese Kombination sieht aus wie ein Pfeil, <-. R erstellt ein Objekt, das alles enthält, was rechts vom Operator <- steht. Wenn Sie sehen möchten, was in einem Objekt gespeichert ist, geben Sie einfach den Namen des Objekts ein und drücken die Eingabetaste.

2.8.2 Wo sehe ich meine Objekte in R?

Alle Objekte werden im Bereich Environment in RStudio angezeigt, wie in Abbildung 2.1 dargestellt. Dieser Bereich zeigt alle Objekte, die Sie seit dem Öffnen von RStudio erstellt haben.

Bildschirmfoto von RStudio, in dem der Bereich Environment eingekreist ist und die Datenobjekte colon und leukemia sowie Werte wie antal_paket auflistet
Abbildung 2.1: Das RStudio-Environment zeigt unsere Objekte.

2.8.3 Objekte in R benennen

Sie können ein Objekt in R nahezu beliebig benennen, es gibt jedoch einige Regeln. Erstens darf ein Name nicht mit einer Zahl beginnen. Zweitens darf ein Name keine Sonderzeichen enthalten, wie ^,! , $, @, +, -,/oder *:

Erlaubt Nicht erlaubt
a 1per
b $
FOO ^dia
my_var 5th
.day !bad
my.object ?var

Erlaubte und nicht erlaubte Objektnamen in R.

2.9 R unterscheidet zwischen Groß- und Kleinschreibung (case sensitive)

R unterscheidet zwischen Groß- und Kleinschreibung, daher verweisen income und Income auf unterschiedliche Objekte. R achtet tatsächlich immer auf Groß- und Kleinschreibung. Das bedeutet, dass Sie in jeder Hinsicht (ob Sie auf Objekte verweisen oder Funktionen verwenden) die Groß- und Kleinschreibung beachten müssen. Wenn Sie versuchen, die Funktion survival () zu verwenden, indem Sie Survival () schreiben, erhalten Sie einen Fehler.

2.10 R überschreibt Objekte

Wenn Sie ein Objekt erstellen und zu einem späteren Zeitpunkt die Informationen in diesem Objekt überschreiben, fragt R nicht um Erlaubnis. Denken Sie daran, wenn Sie Objekte erstellen und benennen. Das folgende Beispiel zeigt, wie wir das Objekt my_number überschreiben:

my_number <- 100
my_number <- 999
my_number
[1] 999

Mit der Funktion ls () können Sie alle Objekte ausgeben, die derzeit in Ihrer R-Umgebung gespeichert sind:

ls()
[1] "a"   "my_number"   "my_numbers"  "your_number"

2.11 Elementweise Ausführung (element wise execution)

Erstellen wir einen neuen Vektor namens new_numbers:

new_numbers <- c(1, 2, 3, 4, 5, 6)

Wir sehen uns nun an, was passiert, wenn wir dieses Objekt auf verschiedene Weise bearbeiten.

new_numbers/2
[1] 0.5 1.0 1.5 2.0 2.5 3.0

Wie Sie (oben) sehen, hat R jedes Element durch 2 geteilt.

new_numbers-1
[1] 0 1 2 3 4 5

Wie Sie (oben) sehen, hat R von jedem Element 1 subtrahiert.

Wenn Sie also einen Vektor oder ein Objekt bearbeiten, führt R für jedes Element des Vektors dieselbe Operation aus.

Wenn Sie zwei oder mehr Vektoren in einer Operation verwenden, richtet R die Vektoren aneinander aus und führt eine Folge einzelner Operationen aus. Wenn Sie zum Beispiel new_numbers * new_numbers ausführen, richtet R die beiden new_numbers-Vektoren aneinander aus und multipliziert dann das erste Element von Vektor 1 mit dem ersten Element von Vektor 2. Anschließend multipliziert R das zweite Element von Vektor 1 mit dem zweiten Element von Vektor 2 und so weiter, bis jedes Element multipliziert wurde. Das Ergebnis ist ein neuer Vektor mit derselben Länge wie die beiden ersten, wie unten gezeigt:

new_numbers*new_numbers
[1]  1  4  9 16 25 36

Wenn Sie R zwei Vektoren unterschiedlicher Länge übergeben, wiederholt R den kürzeren Vektor, bis er so lang ist wie der längere, und führt dann die Berechnung durch.

a <- c(2)
b <- c(4, 4, 4, 4)
a*b
[1] 8 8 8 8

2.12 Skripte

Ein R-Skript ist einfach eine Textdatei (mit der Dateiendung .R), die alle Befehle enthält, die Sie ausführen möchten. Diese Befehle stehen in der Regel nacheinander, das heißt, die Zeilen werden eine nach der anderen ausgeführt. Sie werden Ihren R-Code fast immer in längeren Skripten schreiben. Um ein neues R-Skript zu erstellen, öffnen Sie das Hauptmenü in RStudio und wählen Datei > Neue Datei > R Script. Dadurch wird eine neue Textdatei geöffnet, die Sie anschließend über Datei> Speichern unter speichern können (die Dateiendung ist.R). Hier ist ein Beispiel für ein kurzes R-Skript:

my_numbers <- >c(1, 1, 1, 1)
your_numbers <- c(2, 2, 2, 2)
our_numbers <- my_numbers+your_numbers
our_mean <- mean(our_numbers)

## paste() wird verwendet, um Zeichenketten zu verbinden</em>
paste("The mean of my numbers is: ", our_mean)
[1] "The mean of my numbers is:  3"

Sie können diese Zeilen einzeln ausführen, indem Sie jede Zeile markieren und auf die Schaltfläche Run klicken (oder unter Windows Strg+Enter und auf dem Mac Cmd+Enter drücken). Sie können auch alle Zeilen markieren und sie gemeinsam ausführen, indem Sie auf die Schaltfläche Run klicken.

Skripte machen Ihre Arbeit reproduzierbar. Sie ermöglichen es Ihnen, Ihren Code jederzeit erneut auszuführen und wieder dieselben Ergebnisse zu erhalten. Sie können Ihren Code auch anpassen oder korrigieren und ihn dann erneut ausführen. Denken Sie an die Situation, in der Sie die gesamte Analyse unter Ausschluss der Männer aus der Studie erneut durchführen müssen; dies lässt sich erreichen, indem Sie ein oder zwei Zeilen anpassen und das Skript dann erneut ausführen.