GNU R: Benutzung von R aus der Kommandozeile

R Skripte können aus der Kommandozeile aufgerufen werden. Dafür kann das Programm Rscript verwendet werden. Als erster Parameter wird das R Script angegeben. Die Option vanilla versetzt R in den non interactive Mode, R stellt also keine lästigen Fragen und kann so gut in andere Scripte oder Programme eingebunden werden. Die vanilla Option kann sowohl bei Rscript als auch bei R angegeben werden.

Rscript --vanilla MYSCRIPT.Rd 

Wie es bei anderen Programmen üblich ist, kann man Rscript auch Parameter übergeben, die von unserem R Script benutzt werden kann.

Rscript --vanilla MYSCRIPT.Rd AnalyseError test3.csv 10

Um aus dem R Script auf die Parameter zugreifen zu können muss man dem R Script noch mitteilen, dass es Kommandozeilenparameter entgegennimmt. Dafür muss in der ersten Zeile des R Scripts folgende Anweisung enthalten:

args <- commandArgs(TRUE)

Danach kann einfach auf die Parameter zugegriffen werden:

tt = read.csv(args[2]);
# lädt die CSV Datei test3.csv

Eine Besonderheit ist, dass der erste Parameter der Name des R Scripts ist. Das Beispiel ist also korrekt, args[2] enthält den Dateinamen der CSV Datei. Weiterhin ist zu beachten, dass es sich bei den Parametern um Zeichenketten handelt. Der Parameter 10 muss also explizit in eine Zahl umgewandelt werden. Dafür kann wie üblich as.numeric verwendet werden.

treshold = as.numeric(args[3]);
# treshold hat den numerischen Wert 10

Man kann ein R Script auch ohne explizite Angabe des Interpreters in einer Shell laufen lassen. Dazu muss wie bei anderen Skriptsprache auch den zu benutzenden Interpreter in der ersten Zeile des Skripts angeben. Diese Angabe wird auch Shebang genannt. Mit Hilfe des Shebangs wird der Skript Interpreter inclusive Pfad und ggf. die Parameter angegeben.

#! /usr/bin/Rscript --vanilla
args <- commandArgs(trailingOnly = TRUE)