4  RStudio als Arbeitsumgebung

Öffnet man RStudio das erste Mal, so erscheinen drei Fenster umgeben von einigen Bedienelementen. Wie in Abbildung 4.1 zu sehen ist auf der linken Seite eine Konsole, rechts befindet sich eine leere Arbeitsumgebung, sowie das Dateisystem.

Abbildung 4.1: RStudio direkt nach dem ersten Öffnen. Auf der linken Seite ist nur die Konsole, rechts ein leeres Environment sowie das Dateisystem in dem sich der Nutzer gerade befindet.

Erst nachdem man eine neue Datei mit File >> New File >> R Script erstellt oder über das Dateisystem eine bereits existierende Datei öffnet hat man die normale Arbeitsumgebung.

4.1 Benutzung des RStudios

Nach dem Öffnen einer Datei ist das RStudio wie unten auf dem Bild zu sehen aufgeteilt. Die drei wichtigsten Bereiche sind der Editor, die Konsole und das Ausgabefenster.

Abbildung 4.2: Aufbau RStudio

4.1.1 Konsole

  • Konsole (Console) (unten) links läuft das eigentlich Programm R, dort können Befehle direkt ausgeführt werden.
  • In der Konsole geschriebene Zeilen werden nicht in eine Datei gespeichert!
  • Führt man einen unvollständigen Ausdruck (zum Beispiel eine fehlende Klammer) in der Konsole aus, so startet die nächste Zeile mit einem + statt mit einem >. Der Ausdruck kann dann weiter eingegeben werden, als ob es keinen Zeilenumbruch gegeben hätte.
Abbildung 4.3: Das + am Anfang der Zeile wird automatisch erstellt und muss nicht geschrieben werden! Erst wenn alle Klammern geschlossen und der Ausdruck komplett ist, wird er ausgeführt (sofern möglich)

4.1.2 Editor

  • Mit File >> New File >> R Script (oder kurz Strg+Shift+N) wird ein Editor geöffnet.
  • Darin kann R Code geschrieben und mit File >> Save as… abgespeichert werden. Dabei sollten R-Dateien von der Form NameDerDatei.R sein.
  • Hat die Datei bereits einen Namen kann sie im Menu mit File >> Save, dem Diskettensymbol oder Strg+S (Windows/Linux) bzw. Cmd+S (Mac) gespeichert werden.
  • Alle offenen Dateien können mit File >> Save All oder Strg+Alt+S (Windows/Linux) bzw. Cmd+Option+S (Mac) gespeichert werden.
  • Sollte beim Speichern nach einem Encoding gefragt werden ist UTF-8 die beste Wahl. Man kann mit File >> Save with Encoding auch ein spezielles Encoding erzwingen. Dies kann z.B. beim Austausch von Dateien mit anderen Personen wichtig sein.

RStudio kann über das Menu (Tools >> Global Options) individuell angepasst werden. So kann ein anderes Farbschema (Tools >> Global Options >> Appearance) oder eine andere Aufteilung der Fenster (Tools >> Global Options >> Panel Layout) eingestellt werden.

Wie führt man den geschriebenen Code aus?

Wichtig zu erwähnen ist, dass Code, der in ein Skript geschrieben wurde, erst einmal nicht ausgeführt wird!

Abbildung 4.4: Ausführen einzelner Zeilen: geschieht über den Knopf Run oder alternativ die Tastenkombination Strg+Enter (Windows/Linux) bzw. Cmd+Return (Mac)
  • Ausführen des kompletten Codes:
Abbildung 4.5: Ausführen des kompletten Codes in einem Dokument: geschieht über den Knopf Source oder alternativ die Tastenkombination Strg+Alt+R (Windows/Linux) bzw. Cmd+Option+R. (Mac)

Es besteht auch die Möglichkeit über Tastenkombinationen (Shortcuts) nur Teile auszuführen: Tools >> Keyboard Shortcuts.

4.1.3 Dateisystem, Plots, Hilfe, Vorschau

  • befinden sich rechts unten im RStudio und werden im Laufe der Zeit noch erklärt.

4.1.4 Fehler und Warnungen

  • Ist der im Editor geschriebene R-Code offensichtlich fehlerhaft (fehlende Zuweisung, fehlende Klammer, etc.) so erscheint am linken Rand ein rotes Kreuz und der Fehler wird durch eine rote Linie angezeigt.

  • Bei ‘schlechtem’ R-Code erscheint ggf. ein gelbes Dreieck.

  • hier finden Sie eine kleine Übersicht wie sie Fehler finden und vermeiden können Code Diagnostics

4.1.5 Nützliche Einstellungen

Unter Tools >> Global Options findet man praktische / empfehlenswerte Einstellungen:

Die Darstellung der Zeilenumbrüche im Editor: damit vermeidet man beim Schreiben des Codes in einem Editor das Rechts-links Scrollen

Mit der Tastenkombination Strg+Shift+M erzeugt man eine Pipe, die wir in Zukunft noch oft benötigen werden. Nach Setzen des Hakens erhalten wir die native R-Pipe |> statt der magrittr-Pipe %>%.

Eine Anpassung des RStudios (Schriftgröße, -art, Farbschema, etc.)

und weitere Tipps:

  • Fängt man an einen Befehl in die Konsole einzugeben, so erscheint ein Fenster in dem die möglichen Befehle stehen.
  • Bei der Auswahl der Befehle stehen in einem separaten Fenster Informationen zur der jeweils ausgesuchten Funktion.
Abbildung 4.6: Schnelle Hilfe zur Funktion seq() während die Funktion in die Konsole geschrieben wird.
  • Mit Pfeil nach oben können die zuletzt aufgerufenen Befehle angezeigt und bei Bedarf verändert und ausgeführt werden.

4.2 Skripte

Es ist wünschenswert den geschriebenen R-Code in einer Datei zu speichern, so dass dieser nicht verloren geht. Dazu nutzt man einen Editor. Erstellt man im RStudio eine neue Datei über das Menu File >> New File >> R Script, so öffnet sich ein Editorfenster und ein leeres Skript erscheint.

Abbildung 4.7: Ein Skript öffnen: geschieht über die Menuführung des RStudios mit File >> New File >> R Script oder direkt über die Tastenkombination Shift+Strg+N (Windows / Linux) / Cmd+Shift+N (Mac)
Abbildung 4.8: Ein leeres Skript. Nach dem Öffnen hat ein leeres Skript noch keinen Namen: das Skript muss noch gespeichert werden.
Abbildung 4.9: Ein Skript.

Nachdem man ein Skript geöffnet hat sollte man es es unter einem geeigneten Namen abspeichern. Dies geschieht wieder über das Menu File >> Save As….

Tipp: Namensgebung Dateien
  • Vergeben Sie sinnvolle Dateinamen, so dass Sie auch nach einer langen Zeit noch wissen um was es sich handelt: wie zum Beispiel 20241015_Uebung_DataAnalytics.R oder TS_Gruppe3.R.
  • Vermeiden Sie dabei Leerzeichen, Umlaute oder Sonderzeichen (Ausnahme sind Punkt . und Unterstrich _).
  • Der Dateiname sollte im Falle eines R-Skripts auf .R enden, damit RStudio weiß, dass es sich um ein R-Skript handelt.

PhD Comic

4.2.1 Kommentare

Neben der Vergabe aussagekräftiger Dateinamen ist es auch sinnvoll innerhalb des Skripts ordentlich zu arbeiten. Besonders hilfreich ist das Kommentieren von Code. Auch wenn es manchmal etwas lästig erscheint (Ich weiß ja, was ich dort gemacht habe!), ist es ausgesprochen sinnvoll Code zu kommentieren. Es hilft nicht nur einem selbst nach einer gewissen Zeit das Geschriebene (wieder) zu verstehen, sondern kann auch beim Austausch von Codeteilen mit anderen Personen diesen viel Arbeit ersparen.

Das Kommentieren geschieht mit Hilfe der Raute #. Alles Geschriebene nach der Raute wird von R ignoriert:

# Beispiel
# Das ist ein Kommentar 

2 + 2  # Kommentar hinter R-Befehl
[1] 4
## -------------------------------------------
## Das hier ist ein auffälliger Kommentar
## über mehrere Zeilen
## auch mehrere Rauten sind erlaubt!
## -------------------------------------------

4.3 Projekte

4.3.1 Speichern von Daten und Skripten

Was ist relevant: die Daten oder wie sie entstanden sind?

  • Variablen, die im Arbeitsspeicher (Environment) auftauchen (oder auch mit der Funktion ls() sichtbar gemacht werden können, existieren prinzipiell nur so lange, wie die R-Sitzung dauert.

  • Es ist möglich, den Inhalt des Arbeitsspeichers und damit die Inhalte der Variablen zu speichern, allerdings geht dabei die Information verloren, wie diese Daten entstanden sind.

  • Viel wichtiger und besser ist es, die Datei / das Skript, welches die Variablen erzeugt, zu speichern. Damit können die Daten / Ergebnisse jederzeit rekonstruiert werden und gegebenenfalls Änderungen an der Erzeugung durchgeführt werden.

  • Daher ist es sinnvoll unter Tools >> Global Options die Einstellungen zum Workspace wie im unteren Bild zu ändern.

Abbildung 4.10: Es ist sinnvoll den Workspace der vorherigen Sitzung nicht wieder zu laden. Daher sollte der Haken bei Workspace enternt werden.
Abbildung 4.11: Im Environment kann man sehen, welche (sichtbare) Objekte derzeit vom Benutzer erstellt wurden.

4.3.2 Pfade und Verzeichnisse

Im Fall von Pfaden und Verzeichnissen muss man zwischen Mac/Linux- und Windows-Betriebssystemen unterscheiden.

  • Der wesentliche Unterschied ist der Trenner der Pfadkomponenten:
    • Mac/Linux-Systeme nutzen in Pfaden den Schrägstrich / (Slash). Eine Datei hat dann zum Beispiel den Ort /home/tarantino/meineArbeit/dokument.pdf

    • Windows-Systeme nutzen in Pfaden den Backslash \, und die selbe Datei von eben findet man unter \tarantino\meineArbeit\dokument.pdf

Allerdings kommt dem Backslash in R eine besondere Bedeutung zu, so dass man bei der Eingabe eines Windowspfades zwei Backslashes nutzen müsste. Die gute Nachricht ist, dass R auf allen Systeme mit dem einfachen Slash arbeiten kann, so dass alle Nutzer immer die Mac/Linux-Schreibweise nutzen können und sollten!

  • Absolute Pfade sehen auf Mac/Linux-Systemen anders aus als auf Windows-Systemen. Während absolute Windows-Pfade immer mit einem Großbuchstaben, dem Laufwerk (z.B. C:), oder einem Servernamen (z.B. \\servername) beginnen, starten Mac/Linux-Pfade mit einem Slash, (/users/tarantino). Wenn immer es möglich ist, sollten Sie auf die Angabe von absoluten Pfade verzichten, weil es ein Teilen Ihres Codes verhindert: niemand wird genau die gleiche Verzeichnisstruktur wie Sie haben!

  • Ein letzter Unterschied ist, dass bei einem Mac/Linux-System die Tilde ~ ein Platzhalter für das home directory, das ist die oberste Hierarchie des Arbeitsverzeichnis eines Benutzers, ist. Bei einem Windows-System gibt es das in der Form nicht.

4.3.3 Arbeitsverzeichnis vs. R-Projekt

  • In R gibt es ein Arbeitsverzeichnis (working directory). Dies ist der Ort, an dem gesucht wird, wenn Dateien geladen oder abgespeichert werden.

  • Man erhält das Arbeitsverzeichnis mittels der Funktion getwd(). Im RStudio sieht man das Arbeitsverzeichnis im Reiter Files (in Abbildung 4.12 Home > hochschule > vorlesungen).

[1] "/home/jansen/hochschule/homepage/skripte"
  • Mit der Funktion setwd() oder dem Menupunkt Set Working Directory kann ein Arbeitsverzeichnis gesetzt werden,
# don't try this at home!
setwd("/pfad/ins/verderben/")

allerdings gibt es eine sehr viel elegantere Variante dies zu tun, nämlich durch das Erstellen von Projekten.

Abbildung 4.12: Das Arbeitsverzeichnis.
Tipp: Windows-Benutzer

Sollte es nötig sein, dass Sie einen absoluten Pfad in einem R-Skript brauchen, kann man sich das lästige Umschreiben von Backslashes in doppelte Backslashes ersparen, in dem man den Pfad im Dateiexplorer in die Zwischenablage kopiert und dann in der R-Konsole den Befehl readClipboard() ausführt.

4.3.4 Erstellen von Projekten

Nutzt man R und RStudio regelmäßig, so arbeitet man oft an mehr als einem Projekt (z.B. verschiedene Vorlesungen, Studienarbeiten, Praktika, etc.). Es ist sinnvoll, alles, was mit einem Projekt assoziiert ist, zusammen aufzubewahren: (Roh-)Daten, R-Skripte, Analysen, Graphiken. Zu diesem Zweck gibt es im RStudio Projekte

File >> New Project:
erstellt ein neues Projekt. Dabei hat man die Wahl, ob man ein neues Verzeichnis erstellt oder ein bereits existierendes verwendet.

File >> Open Project:
kann ein Projekt geöffnet werden. Dafür muss eine Datei mit der Endung .Rproj existieren.

File >> Recent Projects:
ist schneller, einfacher und praktischer: hier findet man eine Liste der letzten Projekte.

File >> Close Project:
beendet das aktuelle Projekt (temporär) ohne RStudio zu schließen.

Der Wechsel von einem Projekt zum nächsten geschieht am bequemsten über das Dropdown-Menü rechts oben.

Abbildung 4.13: File >> … (Linux). Was die Projekte betrifft ist rot umrandet.
Abbildung 4.14: Drop Down Menu (Windows)

Beispiel

  • Im Folgenden wird beispielhaft ein Projekt mit dem Namen DataAnalytics im Verzeichnis hochschule/ erstellt.
Abbildung 4.15: Erstellt man ein neues Projekt so benötigt man ein Verzeichnis.
Abbildung 4.16: Danach entscheidet man sich für einen Projekttyp, wobei New Project selten falsch ist.
  • Der Name des Projekts entspricht dem Verzeichnisnamen, in dem sich das Projekt befindet. Dieser erscheint nun in der Liste Recent Projects.
Abbildung 4.17: Erstellt man ein neues Projekt in einem neuen Verzeichnis, so benötight dieses Verzeichnis einen sinnvolen Namen. Vermeiden Sie Leerzeiche und Sonderzeichen. Werden Daten oder Grafiken gespeichert, so sind diese im Beispiel im Verzeichnis hochschule/DataAnalytics zu finden.
Aufgabe:
  1. Erstellen Sie ein Projekt für diese Vorlesung.
  2. Führen Sie innerhalb ihres Projekts den folgenden R-Code aus:
library(pacman)
p_load(tidyverse, palmerpenguins)

penguins |> drop_na(sex, flipper_length_mm) |> 
            ggplot(aes(sex, flipper_length_mm)) + 
            geom_boxplot()
ggsave("penguins.pdf")

write_csv(penguins, "penguins.csv")
  1. Überprüfen Sie ob (und wenn ja welche) Dateien in ihrem Projektverzeichnis erstellt wurden.

4.3.5 Zusammenfassung und Empfehlungen

  • Erstellen Sie je ein RStudio Projekt für jede Datenanalyse / jedes Projekt.

  • Bewahren Sie alle (Roh-)Daten in dem zugehörigen Projektverzeichnis auf.

  • Speichern Sie im selben Verzeichnis auch alle Skripte, editieren Sie diese und führen Sie die Skripte teilweise oder komplett aus.

  • Speichern Sie die Ausgaben (Grafiken und bereinigte Daten), wenn Sie diesen verteilen oder mit ihnen weiterarbeiten wollen.

  • Benutzen Sie in R-Skripten statt absoluten ausschließlich relative Pfade. Dadurch wird es möglich, komplette Projektordner auf anderen Rechnern laufen zu lassen (z.B. wenn man mit mehreren Menschen an einem Projekt arbeitet oder auf verschiedenen Rechnern).

  • Laden Sie Pakete in Ihren R-Skripten mit Hilfe des Pakets pacman und der Funktion p_load() (siehe rechts). Dies gewährleistet, dass installierte Pakete geladen und nicht installierte Pakete automatisch installiert und geladen werden.

4.4 Einlesen von Datentabellen

Mit dem RStudio können Datensätze, die zum Beispiel als csv-Datei oder als Excel-Datei vorliegen direkt eingelesen werden. Im Kapitel 7 werden wir uns damit noch sehr ausführlich beschäftigen. Bei wirklich unbekannten Dateien kann es ein wenig schwierig sein. Wir wollen in diesem Kapitel aber nur die einfachen Fälle, die man zum Beispiel für die Beispielaufgaben in diesem Skript oder selber erstellte Daten benötigt, betrachten.

Abbildung 4.18: Mit Hilfe von Import-Funktionen können Daten aus Dateien direkt über eine grafische Oberfläche im RStudio eingelesen werden. Das Einlesen von csv-Dateien geht über From Text, während Excel Dateien mit From Excel eingelesen werden.

4.4.1 Einlesen von Textdateien

Textdateien sind oft als csv-Dateien gespeichert. Das csv steht für comma-seperated-values, was bedeutet, dass die Merkmale durch Kommata getrennt sind. Da das Komma im Deutschen als Dezimaltrenner dient sind deutschsprachige csv-Dateien oft durch Semikola getrennt.

Abbildung 4.19: Im Beispiel sind die Daten sind semikolon-separiert, daher muss man den Delimiter auf Semicolon setzen.
Abbildung 4.20: Hat man den richtigen Separator ausgewählt, so sieht die Vorschau des einzulesenden Datensatzes richtig aus. Auch die Merkmalsnamen und der Datentyp ist im Beispiel schon richtig.

Was kann sonst noch passieren?

  • Haben die Merkmale keine Namen, so müssen wir den Haken bei First Row as Names entfernen. Es werden dann generische Merkmalsnamen X1, X2, etc. vergeben.

  • Sind die Merkmalsnamen nicht in der ersten Zeile, sondern erst in einer späteren, so können wir mit Skip angeben wie viele Zeilen ignoriert werden sollen.

4.4.2 Einlesen von Excel-Dateien

Das Einlesen der Excel-Dateien ist in der Regel unproblematisch. Analog wie bei den Textdateien sucht man das über das Menu Import Dataset >> From Excel >> Browse… die zu installierende Datei aus.

Danach muss sichergestellt werden, dass

  • das richtige Sheet eingelesen wird,
  • die Merkmalsnamen erkannt werden. Gegebenenfalls müssen mit Skip Zeilen übersprungen werden. Sollten keine Merkmalsnamen existieren, so muss der Haken bei First Row as Names entfernt werden und es werden generische Namen vergeben.
Abbildung 4.21: Bei Excel sind die Spalten schon auf natürliche Weise vorgegeben. Beim Einlesen muss nur darauf geachtet werden, dass die Merkmalsnamen stimmen und als solche erkannt werden.
Aufgabe: Einlesen von Dateien

Laden Sie die folgenden Dateien herunter und lesen Sie diese über Import Dataset ein.