Suche…


Einführung

Wenn Sie eine R-Analyse routinemäßig auf viele separate Datendateien anwenden oder anderen Personen eine wiederholbare Analysemethode zur Verfügung stellen möchten, ist ein ausführbares R-Skript eine benutzerfreundliche Methode. Anstelle von Ihnen oder Ihrem Benutzer mit anrufen R und das Skript innerhalb R über ausführen source(.) Oder einen Funktionsaufruf, kann Ihr Benutzer einfach rufen Sie das Skript selbst , als ob es ein Programm.

Bemerkungen

Verwenden Sie zur Darstellung der Standard-Eingabe- / Ausgabekanäle die Funktionsdatei file("stdin") (Eingabe vom Terminal oder einem anderen Programm über Pipe), stdout() (Standardausgabe) und stderr() (Standardfehler). Beachten Sie, dass die Funktion stdin() zwar nicht verwendet werden kann, wenn ein fertiges Skript an R übergeben wird, da die nächsten Zeilen dieses Skripts anstelle der Benutzereingabe gelesen werden.

Die grundlegende Struktur des Standalone-R-Programms und wie es aufgerufen wird

Das erste eigenständige R-Skript

Eigenständige R-Skripts werden nicht vom Programm R ( R.exe unter Windows) ausgeführt, sondern von einem Programm namens Rscript ( Rscript.exe ), das standardmäßig in Ihrer R Installation enthalten ist.

Um auf diese Tatsache hinzuweisen, beginnen eigenständige R-Skripts mit einer speziellen Zeile namens Shebang-Zeile , die den folgenden Inhalt enthält: #!/usr/bin/env Rscript . Unter Windows ist eine zusätzliche Maßnahme erforderlich, die später näher erläutert wird.

Das folgende einfache eigenständige R-Skript speichert ein Histogramm unter dem Dateinamen "hist.png" aus den Zahlen, die es als Eingabe erhält:

#!/usr/bin/env Rscript

# User message (\n = end the line)
cat("Input numbers, separated by space:\n")
# Read user input as one string (n=1 -> Read only one line)
input <- readLines(file('stdin'), n=1)
# Split the string at each space (\\s == any space)
input <- strsplit(input, "\\s")[[1]]
# convert the obtained vector of strings to numbers
input <- as.numeric(input)

# Open the output picture file
png("hist.png",width=400, height=300)
# Draw the histogram
hist(input)
# Close the output file
dev.off()

Sie können mehrere Schlüsselelemente eines eigenständigen R-Skripts sehen. In der ersten Zeile sehen Sie die Shebang-Linie. Anschließend wird cat("....\n") verwendet, um dem Benutzer eine Nachricht zu drucken. Verwenden Sie die file("stdin") immer dann, wenn Sie "User input on console" als file("stdin") angeben möchten. Dies kann anstelle eines Dateinamens in mehreren read.table ( scan , read.table , read.csv , ...) verwendet werden. Nachdem die Benutzereingabe von Zeichenfolgen in Zahlen konvertiert wurde, beginnt die Zeichnung. Dort ist zu sehen, dass Plotbefehle, die in eine Datei geschrieben werden sollen, in zwei Befehlen eingeschlossen sein müssen. Dies sind in diesem Fall png(.) Und dev.off() . Die erste Funktion hängt vom gewünschten Ausgabedateiformat ab (andere gängige Optionen sind jpeg(.) Und pdf(.) ). Die zweite Funktion dev.off() ist immer erforderlich. Es schreibt die Zeichnung in die Datei und beendet den Zeichenvorgang.

Eigenständiges R-Skript vorbereiten

Linux / Mac

Die Datei des Standalone-Skripts muss zuerst ausführbar gemacht werden. Dies kann geschehen, indem Sie mit der rechten Maustaste auf die Datei klicken, "Eigenschaften" im sich öffnenden Menü öffnen und das Kontrollkästchen "Ausführbare Datei" auf der Registerkarte "Berechtigungen" aktivieren. Alternativ den Befehl

chmod +x PATH/TO/SCRIPT/SCRIPTNAME.R

kann in einem Terminal angerufen werden.

Windows

Für jedes eigenständige Skript muss eine Batchdatei mit folgendem Inhalt geschrieben werden:

"C:\Program Files\R-XXXXXXX\bin\Rscript.exe" "%~dp0\XXXXXXX.R" %*

Eine Batchdatei ist eine normale Textdatei, die jedoch die Erweiterung *.bat Ausnahme der Erweiterung *.txt . Erstellen Sie es mit einem Texteditor wie notepad (nicht Word ) oder ähnlichem und setzen Sie den Dateinamen in die Anführungszeichen ( "FILENAME.bat" ) im Sicherungsdialogfeld. Um eine vorhandene Batchdatei zu bearbeiten, klicken Sie mit der rechten Maustaste darauf und wählen Sie "Bearbeiten".

Sie müssen den oben gezeigten Code überall dort anpassen, wo XXX... geschrieben ist:

  • Fügen Sie den richtigen Ordner ein, in dem sich Ihre R-Installation befindet
  • Geben Sie den korrekten Namen Ihres Skripts ein und platzieren Sie es in demselben Verzeichnis wie diese Batchdatei.

Erklärung der Elemente im Code: Der erste Teil "C:\...\Rscript.exe" teilt Windows mit, wo sich das Programm Rscript.exe . Der zweite Teil "%~dp0\XXX.R" weist Rscript an, das von Ihnen geschriebene R-Skript auszuführen, das sich in demselben Ordner befindet wie die Batchdatei ( %~dp0 steht für den Batchdateiordner). Schließlich leitet %* alle Befehlszeilenargumente, die Sie der Batchdatei angeben, an das R-Skript weiter.

Wenn Sie auf die Batchdatei doppelklicken, wird das R-Skript ausgeführt. Wenn Sie Dateien in die Batchdatei ziehen, werden dem R-Skript die entsprechenden Dateinamen als Befehlszeilenargumente zugewiesen.

Verwenden von littler zum Ausführen von R-Skripten

littler (ausgesprochen kleines r ) ( cran ) bietet neben anderen Funktionen zwei Möglichkeiten, R-Skripts mit dem Befehl r littler (wenn man mit Linux oder MacOS arbeitet) von der Kommandozeile aus auszuführen.

Kleiner installieren

Von R:

install.packages("littler")

Der Pfad von r wird im Terminal ausgegeben, wie

You could link to the 'r' binary installed in
'/home/*USER*/R/x86_64-pc-linux-gnu-library/3.4/littler/bin/r'
from '/usr/local/bin' in order to use 'r' for scripting.

Um r über die Befehlszeile des Systems aufrufen zu können, ist ein Symlink erforderlich:

ln -s /home/*USER*/R/x86_64-pc-linux-gnu-library/3.4/littler/bin/r /usr/local/bin/r

Verwenden von apt-get (Debian, Ubuntu):

sudo apt-get install littler

Verwenden von littler mit Standard-.r-Skripts

Mit r von littler können Standalone-R-Skripts ohne Änderungen am Skript ausgeführt werden. Beispielskript:

# User message (\n = end the line)
cat("Input numbers, separated by space:\n")
# Read user input as one string (n=1 -> Read only one line)
input <- readLines(file('stdin'), n=1)
# Split the string at each space (\\s == any space)
input <- strsplit(input, "\\s")[[1]]
# convert the obtained vector of strings to numbers
input <- as.numeric(input)

# Open the output picture file
png("hist.png",width=400, height=300)
# Draw the histogram
hist(input)
# Close the output file
dev.off()

Beachten Sie, dass sich kein Shebang an der Spitze der Skripte befindet. Wenn es als hist.r , kann es direkt vom Systembefehl hist.r werden:

r hist.r

Littler für Shebanged- Skripte verwenden

Es ist auch möglich, ausführbare R-Skripte mit Hilfe von shebang mit littler zu erstellen

#!/usr/bin/env r

am Anfang des Skripts. Das entsprechende R-Skript muss mit chmod +X /path/to/script.r ausführbar chmod +X /path/to/script.r und ist direkt vom Systemendgerät aus aufrufbar.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow