Menu

R-Skript ausführen: Rscript, source() und RStudio

Alle Wege, R-Code auszuführen: die interaktive Konsole, Rscript von der Kommandozeile, source() aus R heraus sowie die Befehle Run und Source in RStudio.

Diese Seite enthält ausführbare Editoren - bearbeiten, ausführen und Ausgabe sofort sehen.

Zwei Arten, R zu nutzen: Konsole vs. Skript

R hat eine interaktive Konsole (eine REPL - read, evaluate, print, loop): Man tippt einen Ausdruck, R antwortet sofort. Wer R in ein Terminal eingibt oder auf den unteren Bereich von RStudio schaut, bekommt einen >-Prompt, an dem jede Zeile sofort mit Enter ausgeführt wird. Die Konsole ist der Ort zum Erkunden - an Daten herumstochern, eine Zeile testen, das Ergebnis ansehen.

Ein R-Skript ist einfach eine reine Textdatei mit R-Code, gespeichert mit der Endung .R. In Skripten lebt die Analyse - ein reproduzierbares Rezept, das jeder (auch das zukünftige Ich) von oben bis unten ausführen kann und dabei dasselbe Ergebnis erhält.

Ein Skript ist nichts Exotisches. Das hier ist ein vollständiges - einfach ausführen:

Alles Weitere dreht sich darum, wie man R eine solche Datei auf verschiedenen Wegen füttert.

Rscript: eine Datei von der Kommandozeile ausführen

R installiert ein Kommandozeilenwerkzeug namens Rscript, das genau dafür gebaut ist. Im Terminal, im Ordner mit der Datei:

Rscript summary.R

R startet, führt die Datei von oben bis unten aus, gibt alles aus, was das Skript ausgibt, und beendet sich. Das ist das Arbeitstier für Automatisierung - Cronjobs, Daten-Pipelines, Server, CI - überall dort, wo Code ohne zuschauenden Menschen läuft.

Ein Verhalten überrascht jeden genau einmal: An der Konsole gibt ein nackter Ausdruck wie avg seinen Wert automatisch aus. Unter Rscript gibt ein nackter Ausdruck innerhalb einer Funktion oder Schleife womöglich gar nichts aus - deshalb sagen Skripte explizit, was sie meinen, mit cat()- oder print()-Aufrufen. Diese Gewohnheit lohnt sich früh.

source(): eine Datei aus R heraus ausführen

Man sitzt bereits in einer R-Sitzung und möchte eine Datei ausführen? Dafür gibt es source():

source("summary.R")

Jede Zeile der Datei läuft in der aktuellen Sitzung, und alles, was das Skript definiert - Variablen, Funktionen -, bleibt danach erhalten. Genau das ist der Sinn: Mit source() lädt man eigene Hilfsfunktionen in eine interaktive Sitzung.

Standardmäßig läuft source() bis auf explizite Ausgaben still. Um zuzusehen, lässt sich jede Zeile beim Ausführen anzeigen:

source("summary.R", echo = TRUE)

Der relative Pfad ist zu beachten: "summary.R" heißt "im aktuellen Arbeitsverzeichnis", und wo das liegt, hängt davon ab, wie R gestartet wurde. Wenn source() oder read.csv() eine Datei rätselhafterweise nicht findet, die doch genau da liegt, ist fast immer das Arbeitsverzeichnis schuld - siehe Arbeitsverzeichnis.

Skripte in RStudio ausführen

RStudio bietet beide Modi über zwei Befehle, und den Unterschied sollte man verinnerlichen:

  • Run (Strg+Enter, Cmd+Enter unter macOS) - führt die aktuelle Zeile oder die markierte Auswahl in der Konsole aus. Das ist der Erkundungsgang: Zeile schreiben, ausführen, ansehen, anpassen.
  • Source (der Source-Button oder Strg/Cmd+Shift+S) - führt die gesamte Datei aus, genau wie source() an der Konsole.

Die Falle beim zeilenweisen Run: Die Konsolensitzung sammelt Zustand an - Variablen aus Zeilen, die später bearbeitet oder gelöscht wurden, leben noch, sodass das Skript "bei mir funktioniert" und bei allen anderen scheitert. Der ehrliche Test eines Skripts ist Source in einer frischen Sitzung (Session → Restart R, dann Source). Übersteht es das, ist es reproduzierbar.

Ein Skript ausführbar machen (macOS / Linux)

Auf Unix-artigen Systemen lässt sich ein R-Skript in einen eigenen Befehl verwandeln. Dazu kommt eine Shebang-Zeile ganz an den Anfang der Datei:

#!/usr/bin/env Rscript
cat("I am a self-running R script\n")

Dann einmal als ausführbar markieren und direkt starten:

chmod +x summary.R
./summary.R

Die Shebang-Zeile sagt der Shell, welcher Interpreter die Datei ausführt; env Rscript findet Rscript, wo auch immer es im PATH der Maschine liegt. Da die Zeile mit # beginnt, liest R selbst sie als Kommentar und ignoriert sie.

Argumente an ein Skript übergeben

Echte Skripte nehmen Eingaben entgegen - einen Dateinamen, ein Datum, einen Schwellenwert -, übergeben nach dem Skriptnamen:

Rscript report.R sales.csv 2026

Im Skript liefert commandArgs(trailingOnly = TRUE) die Argumente als Zeichenvektor (trailingOnly = TRUE verwirft die internen Argumente des Interpreters - man will es praktisch immer):

# report.R
args <- commandArgs(trailingOnly = TRUE)

input_file <- args[1]
year <- as.numeric(args[2])

cat("Reading:", input_file, "\n")
cat("Filtering to year:", year, "\n")

Alles kommt als Text an - "2026", nicht 2026 -, also vor dem Rechnen mit as.numeric() umwandeln. Die Parsing-Logik lässt sich in lauffähiger Form simulieren:

Was wann verwenden?

  • Daten erkunden, Ideen ausprobieren → die Konsole oder Run in RStudio.
  • Die ganze Analyse ausführen → Source in RStudio oder Rscript im Terminal.
  • Eigene Hilfsfunktionen in eine Sitzung ladensource("helpers.R").
  • Automatisierung, Scheduler, PipelinesRscript, mit commandArgs() für Eingaben.

Was in diesen Dateien steht, ist Thema der nächsten Lektion - siehe R-Syntax.

Was bleibt hängen

  • Die Konsole ist zum Erkunden da; .R-Skriptdateien sind für reproduzierbare Analysen.
  • Rscript file.R führt ein Skript von der Kommandozeile aus; source("file.R") führt es innerhalb einer Sitzung aus (mit echo = TRUE zum Zusehen).
  • In RStudio führt Run eine Zeile aus, Source die Datei - und Source in einer frischen Sitzung ist der echte Reproduzierbarkeitstest.
  • #!/usr/bin/env Rscript plus chmod +x macht ein Skript direkt ausführbar; commandArgs(trailingOnly = TRUE) liest seine Argumente als Text.

Als Nächstes: Rs Syntax - Zuweisung mit <-, Funktionsaufrufe und die Alles-ist-ein-Vektor-Regel.

Häufig gestellte Fragen

Wie führt man ein R-Skript über die Kommandozeile aus?

Mit dem Befehl Rscript, der mit R mitgeliefert wird: Rscript analysis.R. Er führt die Datei von Anfang bis Ende aus und gibt alles aus, was das Skript ausgibt. Das ist der Standardweg, R in geplanten Jobs, Pipelines und auf Servern laufen zu lassen.

Was ist der Unterschied zwischen Run und Source in RStudio?

Run (Strg/Cmd+Enter) führt nur die aktuelle Zeile oder Auswahl in der Konsole aus - ideal beim Erkunden. Source führt die ganze Datei in einem Rutsch aus, wie es Rscript täte. Das Skript in einer frischen Sitzung zu sourcen ist der echte Test, ob es von oben bis unten funktioniert.

Was macht source() in R?

source("script.R") liest eine Datei und führt jede Zeile in der aktuellen R-Sitzung aus, sodass alle darin definierten Variablen und Funktionen anschließend verfügbar sind. Mit echo = TRUE wird zusätzlich jede Zeile beim Ausführen ausgegeben.

Wie übergibt man Argumente an ein R-Skript?

Rscript script.R wert1 wert2 ausführen und die Argumente im Skript mit args <- commandArgs(trailingOnly = TRUE) einlesen. Der Teil trailingOnly = TRUE entfernt die internen Argumente des Interpreters und behält nur die eigenen. Alles kommt als Text an, Zahlen also mit as.numeric() umwandeln.

Coddy programming languages illustration

Lerne mit Coddy zu programmieren

LOS GEHT'S