Kapitel 3 R Projekte

Woher weiß der Computer, an welchem Ort sich mein Datensatz befindet? Die Antwort auf diese Frage war lange umständlich und je nach Betriebssystem unterschiedlich. Das Konzept der Projekte innerhalb von R stellt die Basis zum einfachen Einlesen deines Datensatzes dar.

3.1 Die Probleme der Pfade

Erinnere dich an das letzte Mal zurück, als du eine Datei irgendwo hochgeladen hast. Normalerweise öffnet sich dann ein kleines Dialogfenster, durch das du bis zu deiner Datei navigieren kannst. Das hat den Hintergrund, dass dein Betriebssystem den genauen Ort der Datei – den so genannten Pfad – wissen muss, um diese finden und hochladen zu können. Das gleiche kannst du beobachten, wenn du gefragt wirst, wo genau du auf deinem Computer eine heruntergeladene Datei speichern möchtest. In R war das Einlesen von Datensätzen genau deswegen lange ein Problem. Dabei gibt es vor allem vier zentrale Probleme hervorzuheben:

  1. Wenn jemand auf einem anderen Computer die Analysen innerhalb deines R Skripts nachvollziehen möchte, ist der Pfad auf seinem oder ihrem Computer anders.
  2. Der Dateipfad ist oft lang, weil die Zieldatei in vielen verschachtelten Unterordnern liegt.
  3. Häufig verschiebt man den Ordner mit der Zeit an einen anderen Ort.
  4. Zwischen den Betriebssystemen ist die Art, den Pfad darzustellen, unterschiedlich.

Zum Ersten Punkt kommt hinzu, dass die wenigsten überhaupt wissen, was genau ein Pfad ist und wie man diesen korrekt angeben müsste. Punkt zwei und drei ist vor allem hinsichtlich Reproduzierbarkeit ein Problem. Auch wenn du deine Analysen an KollegInnen oder BetreuerInnen schicken möchtest, wird der Code ohne Anpassungen nicht funktionieren. Glücklicherweise gibt es mittlerweile R Projekte, so dass du dich niemals mit Pfaden und daraus resultierenden fehlenden Reproduzierbarkeit auseinander setzten musst. Durch Projekte kann eine Funktion zum Einlesen des Datensatzes unabhängig vom Ort des Ordners sehen, wo sich die Datei befindet. Die einzigen beiden Voraussetzungen sind, dass der Datensatz im selben Ordner oder Unterordner wie die R Projektdatei liegt und dass man das here Package lädt.

3.2 Projekte in RStudio erstellen

Nehmen wir einmal an, auf unserem Desktop liegt ein Ordner namens Beispiel. Wie in Abbildung 3.1 ersichtlich, befinden sich in diesem Ordner drei Dateien und ein Unterordner namens Daten.

Beispielhafte Ordnerstruktur mit R Skript, Projektdatei und Datensatz.

Abbildung 3.1: Beispielhafte Ordnerstruktur mit R Skript, Projektdatei und Datensatz.

Auswertung.R ist unser R Skript, Beispiel.Rproj unsere Projektdatei und video.xlsx der Datensatz, den wir zur Auswertung einlesen wollen. Die Projektdatei muss manuell vor dem Einlesen erstellt werden. Dafür benötigt man nur ein paar Klicks.

Oben rechts befindet sich ein Reiter namens Project: (None), wenn kein Projekt geöffnet ist und ansonsten der Projektname (zum Beispiel das Projekt Beispiel). Öffne zuerst das Dropdown Menu.

Erster Schritt beim Erstellen eines neuen Projektes.

Abbildung 3.2: Erster Schritt beim Erstellen eines neuen Projektes.

Uns interessieren zum einen New Project... und Open Project... und zum anderen sind weiter unten andere Projekte aufgelistet, die vorher geöffnet wurden (hier 07_Buch und remp). Dadurch kann man mit einem einfachen Klick zwischen den eigenen Projekten wechseln. Dieses Feature erleichtert die Arbeit ungemein, da man auf dem Computer nicht mehr diverse Ordner nach den richtigen Dateien durchsuchen muss. Zum Erstellen eines neuen Projekts klicke auf New Project..., wodurch ein neues Fenster erscheint.

Zweiter Schritt beim Erstellen eines neuen Projektes.

Abbildung 3.3: Zweiter Schritt beim Erstellen eines neuen Projektes.

Wir entscheiden uns exemplarisch für die Option Existing Directory. Das bedeutet, unser Ordner Namens Beispiel existiert bereits auf dem Desktop. Ob dieser Ordner leer oder bereits mit anderen Dateien gefüllt ist, ist nicht weiter von Bedeutung.

Letzter Schritt zur Erstellung eines neuen Projektes.

Abbildung 3.4: Letzter Schritt zur Erstellung eines neuen Projektes.

Mit einem Klick auf Create Project wird nun eine Projektdatei mit der Endung .Rproj in den gewählten Ordner gespeichert. Projekte bieten übrigens bezüglich Reproduzierbarkeit einen weiteren Bonus. Bei jedem Start von RStudio wird eine neue und in sich abgeschlossene R Umgebung geladen. So kann garantiert werden, dass der Code genau so auch auf anderen Computern ausgeführt werden kann. Beachte, beim Öffnen eines R Projects in dem Ordner nicht auf das R Skript (hier Auswertung.R) sondern auf die Projektdatei zu klicken und erst im Anschluss das R Skript zu öffnen. Für alle zukünftigen Öffnungen kannst du in Zukunft einfach RStudio öffnen und in dem eingangs beschrieben Dropdown Menü rechts oben das Projekt auswählen. Damit R die Position der Projektdatei auch findet, brauchen wir nun außerdem das here Package.

Beim Arbeiten in einer Cloud wie Dropbox kann es zu einer Fehlermeldung kommen, die besagt, dass RStudio nicht auf die Datei zugreifen kann. Um das zu umgehen, muss die Synchronisierung der Cloud für die Dauer des Arbeitens mit R angehalten werden.

3.3 Der Pfad zum Datensatz

Die Magie im Kontext von Projekten passiert, wenn du das here Package lädst. Das Package findet selbstständig den relativen Pfad zu deiner Projektdatei heraus. Was bedeutet das? Während man früher beispielsweise auf Windows mit C:\Users\J-PhN\Desktop\Beispiel den absoluten Pfad zum Ordner eingeben musste, findet das here Package den Ordner Beispiel mit der Projektdatei unabhängig von der Lage des Ordners. In der Praxis sieht das beim Laden wie folgt aus:

> library(here)
here() starts at C:/Users/J-PhN/Desktop/Beispiel

Würden wir den Ordner verschieben, hätte das keine Auswirkungen auf unseren Code, denn das Package würde wieder zum Projektordner finden. Der erste Schritt ist also immer das Erstellen eines R Projekts und das Laden des here Packages am Anfang jedes neuen Skripts, mit dem man einen Datensatz einlesen möchte.

Alternativ kann der Pfad zum Datensatz auch mit setwd() manuell festgelegt werden. Da der Pfad allerdings zwischen den Betriebssystemen unterschiedlich ist und man nach jedem Verschieben der Dateien erneut setwd() anpassen muss, wird ausdrücklich davon abgeraten.