Lokalisieren Sie R-Skript- und Datendateien, ohne das Arbeitsverzeichnis zu ändern

Jesse John 21 Juni 2023
  1. R Studio-Projekte
  2. die Funktion file.path()
  3. das here-Paket
  4. der vorgeschlagene Arbeitsablauf
Lokalisieren Sie R-Skript- und Datendateien, ohne das Arbeitsverzeichnis zu ändern

Möglicherweise möchten wir häufig den Speicherort der aktuellen Datei als Arbeitsverzeichnis von R festlegen, da es uns ermöglicht, relative Pfade zu verwenden, um auf benötigte R-Skripte und Datendateien zu verweisen. Das Ändern des Arbeitsverzeichnisses ist jedoch keine ideale Lösung.

Dieser Artikel zeigt, wie Sie ein R Studio-Projekt, das here-Paket und die Funktion file.path() kombinieren, damit R für ein Projekt benötigte Dateien finden kann, ohne das Arbeitsverzeichnis manuell an den Speicherort des aktuellen Skripts zu ändern.

R Studio-Projekte

Wenn wir ein R-Projekt mit R Studio erstellen, wird eine .Rproj-Datei im angegebenen Ordner erstellt.

Wenn wir eine .Rproj-Datei öffnen:

  1. Wir erhalten eine neue Instanz von R Studio mit einem Arbeitsbereich, der diesem Projekt gewidmet ist.
  2. Der Ordner, in dem sich die .Rproj befindet, wird zum Arbeitsverzeichnis gemacht.

Eine .Rmd-Datei in einem Unterordner dieses Projektordners ändert jedoch vorübergehend das Arbeitsverzeichnis in ihren Ordner, wenn sie gestrickt wird. Das unten erwähnte here-Paket löst dieses Problem.

die Funktion file.path()

Die Basis-R-Funktion file.path() ermöglicht es uns, den Pfad zu den erforderlichen Dateien plattformunabhängig zu konstruieren.

Wenn sich beispielsweise die Datei mydata.csv in einem Unterordner namens datafiles befindet, lautet die Syntax:

file.path("datafiles", "mydata.csv")

Die Funktion gibt den Pfad mit dem richtigen Trennzeichen für das Betriebssystem zurück, auf dem das Skript mit dem Code ausgeführt wird.

das here-Paket

Bei Verwendung in einem R-Projekt ermöglicht uns das here-Paket, den Pfad zu allen Dateien als relative Pfade aus dem Hauptprojektordner zu schreiben.

Dies wird erreicht, indem nach der .Rproj-Datei relativ zum Speicherort der aktuellen Datei gesucht wird.

Es muss installiert werden, um das here-Paket verwenden zu können. Wenn Dateien von verschiedenen Benutzern oder Computern gemeinsam genutzt werden, müssen sie auf allen betroffenen Computern installiert werden.

Verwenden Sie das here-Paket in jedem Skript oder .Rmd-Dokument wie folgt:

  1. Rufen Sie zuerst here::i_am() mit dem Pfad zur aktuellen Datei relativ zum Hauptprojektordner auf, der die Datei .Rproj enthält. Verwenden Sie die Funktion file.path(), um diesen Pfad zu codieren.

  2. Laden Sie das here-Paket mit library(here).

  3. Konstruieren Sie mithilfe der Funktion here() relative Pfade zu den erforderlichen Dateien aus dem Hauptprojektordner. Die Syntax ist ähnlich wie file.path().

    here() nutzt jedoch sein Wissen über den Speicherort der .Rproj-Datei, um R beim Auffinden der referenzierten Dateien zu helfen.

Beispiel:

# Suppose the folder structure of the project is as follows.

ProjFolder
|___Scripts
|      |__MyScript.R
|
|___Data
|      |__MyData.csv
|
|__Documents
       |__MyRMarkdown.Rmd


# In .R files. The same for .Rmd files.

# First, give the path of this script file relative to the main project folder.
here::i_am(file.path("Scripts", "MyScript.R"))

# Then, load the here package.
library(here)

# Subsequently, use the here() function whenever a path is written.
# Use a relative path from the main project folder.
myvar = read.csv2(here("Data", "MyData.csv"))

der vorgeschlagene Arbeitsablauf

  1. Starten Sie das Projekt, indem Sie die Datei .Rproj öffnen. Dadurch wird das Arbeitsverzeichnis auf den Ordner festgelegt, der diese Datei enthält.
  2. Öffnen Sie die erforderlichen Dateien über das Dateifenster in R Studio. Dadurch wird sichergestellt, dass sie in dieser bestimmten Instanz von R Studio mit dem richtigen Arbeitsverzeichnis geöffnet werden.
  3. Befolgen Sie in Skripten und .Rmd-Dateien die Schritte im vorherigen Abschnitt, um das here-Paket zu verwenden.

Der gesamte Projektordner kann sich an einem beliebigen Ort auf dem Computer befinden. Es kann als Ganzes geteilt und auf jedem anderen Computer verwendet werden, der über die erforderliche Software verfügt.

Wenn die Funktion here() mit anderen Paketen in Konflikt gerät, verwenden Sie die Syntax here::here().

Verweise

Einzelheiten zu R Studio-Projekten finden Sie unter R für Data Science.

Details zum here-Paket finden Sie zuerst im Blogbeitrag: Warum sollte ich das here-Paket verwenden, wenn ich bereits Projekte verwende?. Dann lesen Sie die Vignette von hier.

Autor: Jesse John
Jesse John avatar Jesse John avatar

Jesse is passionate about data analysis and visualization. He uses the R statistical programming language for all aspects of his work.