3  RStudio als Arbeitsumgebung

Öffnen wir RStudio das erste Mal, so erscheinen drei Fenster, umgeben von einigen Bedienelementen. Wie in Abbildung 3.1 zu sehen, ist auf der linken Seite eine Konsole, rechts oben befindet sich eine leere Arbeitsumgebung und rechts unten das Dateisystem.

Abbildung 3.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. Das Erscheinungsbild hängt vom Betriebssystem und dem gewählten Layout ab.

Wir können nun in die Konsole R-Befehle eingeben, die dann nach Drücken der Enter-Taste ausgeführt werden.

Erst nachdem wir eine neue Datei mit File >> New File >> R Script (bzw. Strg + Shift + N (Linux, Windows) oder Cmd + Shift + N (macOS)) erstellen oder über das Dateisystem eine bereits existierende Datei öffnen, haben wir die vollständige Arbeitsumgebung.

3.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 3.2: Aufbau RStudio

3.1.1 Konsole

  • In der Konsole (Console) (unten links) läuft das eigentliche Programm R, dort können Befehle direkt ausgeführt werden.
  • In der Konsole geschriebene Zeilen werden nicht (langfristig) in eine Datei gespeichert! Allerdings können wir mit den Pfeiltasten ↓ und ↑ auf die zuletzt eingegebenen Befehle zurückgreifen.
  • 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 3.3: Das + am Anfang der Zeile wird automatisch erstellt und muss nicht geschrieben werden! Erst wenn alle Klammern geschlossen sind und der Ausdruck komplett ist, wird er ausgeführt (sofern möglich).

3.1.2 Editor (R-Skript)

Ein Editor ist ein Fenster, in dem wir Text schreiben können, den wir dann in unserem Arbeitsverzeichnis als Datei abspeichern können.

  • Mit File >> New File >> R Script (bzw. Strg + Shift + N (Windows, Linux) oder Cmd + Shift + N (macOS)) wird ein Editor geöffnet.
  • Darin kann R-Code geschrieben und mit File >> Save as… abgespeichert werden.
    • R-Skript: NameDerDatei.R
    • Quarto-Skript: NameDerDatei.qmd
  • Hat die Datei bereits einen Namen, kann diese im Menü mit File >> Save, dem Diskettensymbol oder Strg + S (Windows, Linux) bzw. Cmd + S (macOS) gespeichert werden.
  • Alle offenen Dateien können mit File >> Save All oder Strg + Alt + S (Windows, Linux) bzw. Cmd + Option + S (macOS) gespeichert werden.
  • Sollte beim Speichern nach einem Encoding gefragt werden, ist UTF-8 die beste Wahl. Wir können mit File >> Save with Encoding auch ein spezielles Encoding erzwingen. Dies kann z.B. beim Austausch von Dateien mit anderen Personen wichtig sein.
TippOft benutzte Tastenkürzel
Aktion Windows, Linux macOS
Code ausführen (aktuelle Zeile) Strg + Enter Cmd + Enter
Dokument rendern Strg + Shift + K Cmd + Shift + K
Neues Skript öffnen Strg + Shift + N Cmd + Shift + N
Offene Dateien speichern Strg + Alt + S Cmd + Option + S
Kommentar ein-/ausschalten Strg + Shift + C Cmd + Shift + C
Pipe-Operator |> Strg + Shift + M Cmd + Shift + M
Abbildung 3.4: Um eine R-Datei oder Quarto-Datei zu erstellen, zu speichern, umzubenennen oder zu schließen, gibt es das File-Menü.

Wie führen wir den geschriebenen Code aus?

Wichtig zu erwähnen ist, dass Code, der in ein Skript geschrieben wird, erst einmal nicht ausgeführt wird, auch wenn die Enter-Taste gedrückt wird. Beim Ausführen müssen wir zwei verschiedene Szenarien unterscheiden:

R-Skript (Dateiendung .R):

  • Ausführen einzelner Zeilen:
Abbildung 3.5: 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 3.6: 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.

Quarto-Dokument (Endung .qmd)

Ein Quarto-Dokument führt nicht nur den geschriebenen R-Code aus, sondern erzeugt ein Dokument (z.B. html, pdf, revealjs). Dies ist insbesondere dann sinnvoll, wenn wir eine Dokumentation integrieren wollen oder unsere Daten präsentieren wollen. Quarto-Dokumente müssen daher kompiliert werden, was bei einem einfachen Dokument in der Regel mit dem Render-Knopf geschieht.

Abbildung 3.7: Rendern eines Quarto-Dokuments

3.1.3 Dateisystem, Plots, Hilfe, Vorschau

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

3.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

3.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.

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 zu der jeweils ausgesuchten Funktion.
Abbildung 3.8: 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.

3.2 Skripte

In Kapitel 3.1.2 haben wir bereits beschrieben, wie man den Editor nutzt. Warum ist das wichtig? Wenn wir R-Code oder allgemein Dateien schreiben, dann möchten wir diese abspeichern, sodass sie nicht verloren gehen. Genau dazu nutzt man einen Editor. Erstellt man im RStudio eine neue Datei über das Menü File >> New File >> R Script oder File >> New File >> Quarto Document…, so öffnet sich ein Editorfenster und ein leeres Skript erscheint, wobei beim Quarto-Dokument schon ein rudimentärer Header hinzugefügt werden kann.

Abbildung 3.9: Ein Skript öffnen: geschieht über die Menüführung des RStudios mit File >> New File >> R Script oder direkt über die Tastenkombination Shift + Strg + N (Windows / Linux) / Cmd + Shift + N (macOS)
Abbildung 3.10: Ein leeres Skript. Nach dem Öffnen hat ein leeres Skript noch keinen Namen: das Skript muss noch gespeichert werden.
Abbildung 3.11: Ein R-Skript.
Abbildung 3.12: Ein einfaches Quarto-Skript.

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

TippTipp: 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.qmd.
  • 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, im Fall von Quarto-Dateien auf .qmd.

PhD Comic

3.2.1 Kommentare in R-Skripten

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!
## -------------------------------------------

3.3 Projekte

RStudio bietet die Möglichkeit, Projekte zu erstellen. Die Vorteile bestehen darin, dass

  • alle zusammengehörigen Dateien (zum Beispiel einer Vorlesung oder einer Analyse) in einem Ordner zu finden sind.
  • Analysen reproduzierbar werden.

3.3.1 Speichern von Daten und Skripten

  • 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 3.13: Es ist sinnvoll, den Workspace der vorherigen Sitzung nicht wieder zu laden. Daher sollte der Haken bei Workspace entfernt werden.
Abbildung 3.14: Im Environment kann man sehen, welche (sichtbaren) Objekte derzeit vom Benutzer erstellt wurden.

3.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 dieselbe 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 Windows-Pfades zwei Backslashes nutzen müsste. Die gute Nachricht ist, dass R auf allen Systemen 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). Wann immer es möglich ist, sollten Sie auf die Angabe von absoluten Pfaden 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 Arbeitsverzeichnisses eines Benutzers, ist. Bei einem Windows-System gibt es das in der Form nicht.

3.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 3.15 Home > hochschule > vorlesungen).

[1] "/home/jansen/hochschule/homepage/skripte"
  • Mit der Funktion setwd() oder dem Menüpunkt 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 3.15: Das Arbeitsverzeichnis.
TippTipp: 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, indem man den Pfad im Dateiexplorer in die Zwischenablage kopiert und dann in der R-Konsole den Befehl readClipboard() ausführt.

TippAbsolute Pfade vermeiden!

Niemals absolute Pfade verwenden! Diese funktionieren nur lokal auf dem jeweiligen Rechner! Mit relativen Pfaden und einem RStudio-Projekt läuft der Code auf allen Rechnern!

3.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 3.16: File >> … (Linux). Was die Projekte betrifft, ist rot umrandet.
Abbildung 3.17: Drop-down-Menü (Windows)

Beispiel

  • Im Folgenden wird beispielhaft ein Projekt mit dem Namen DataAnalytics im Verzeichnis hochschule/ erstellt. Die Struktur könnte wie folgt aussehen:

Empfohlene Ordnerstruktur:

hochschule/DataAnalytics/
├── DataAnalytics.Rproj       ← Projektdatei (nie manuell bearbeiten)
├── daten/
│   ├── raw/                  ← Rohdaten (nie verändern!)
│   └── processed/            ← aufbereitete Daten
├── skripte/                  ← R- und Quarto-Dateien
├── output/                   ← Tabellen, Grafiken
└── README.md                 ← Kurzbeschreibung des Projekts
Abbildung 3.18: Erstellt man ein neues Projekt, so benötigt man ein Verzeichnis.
Abbildung 3.19: 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 3.20: Erstellt man ein neues Projekt in einem neuen Verzeichnis, so benötigt dieses Verzeichnis einen sinnvollen Namen. Vermeiden Sie Leerzeichen und Sonderzeichen. Werden Daten oder Grafiken gespeichert, so sind diese im Beispiel im Verzeichnis hochschule/DataAnalytics zu finden.
HinweisAufgabe:
  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)

penguins |> drop_na(sex, flipper_len) |> 
            ggplot(aes(sex, flipper_len)) + 
            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.

3.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 diese 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(). Dies gewährleistet, dass installierte Pakete geladen und nicht installierte Pakete automatisch installiert und geladen werden.

3.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.

Abbildung 3.21: 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.

3.4.1 Einlesen von Textdateien

Textdateien sind oft als csv-Dateien gespeichert. Das csv steht für comma-separated 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 3.22: Im Beispiel sind die Daten semikolonsepariert, daher muss man den Delimiter auf Semicolon setzen.
Abbildung 3.23: Hat man den richtigen Separator ausgewählt, so sieht die Vorschau des einzulesenden Datensatzes richtig aus. Auch die Merkmalsnamen und die Datentypen sind 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.

3.4.2 Einlesen von Excel-Dateien

Das Einlesen der Excel-Dateien ist in der Regel unproblematisch. Analog zu den Textdateien sucht man über das Menü Import Dataset >> From Excel >> Browse… die einzulesende 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 3.24: 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.
HinweisAufgabe: Einlesen von Dateien

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