it-swarm.com.de

Führen Sie das R-Skript über die Befehlszeile aus

Ich habe eine Datei namens a.r, sie hat eine chmod von 755,

sayHello <- function(){
   print('hello')
}

sayHello()

Wie kann ich das über die Kommandozeile ausführen?

426
Sait

Wenn Sie möchten, dass die Ausgabe auf dem Terminal gedruckt wird, verwenden Sie am besten Rscript

Rscript a.R

Beachten Sie, dass bei Verwendung von R CMD BATCH a.R anstelle der Umleitung der Ausgabe auf Standardout und der Anzeige auf dem Terminal eine neue Datei mit dem Namen a.Rout erstellt wird.

R CMD BATCH a.R
# Check the output
cat a.Rout

Eine andere Sache, die Sie bei der Verwendung von Rscript beachten sollten, ist, dass das Paket methods nicht standardmäßig geladen wird, was zu Verwirrung führen kann. Wenn Sie sich also auf irgendetwas verlassen, das Methoden bereitstellen, sollten Sie es explizit in Ihr Skript laden.

Wenn Sie wirklich die Methode ./a.R zum Aufrufen des Skripts verwenden möchten, können Sie oben im Skript einen entsprechenden #! hinzufügen

#!/usr/bin/env Rscript
sayHello <- function(){
   print('hello')
}

sayHello()

Ich werde auch bemerken, dass es auf einem * Unix-System das nützliche littler -Paket gibt, das ein einfaches Kommandozeilen-Piping zu R bietet.

610
Dason

Dies beantwortet die Frage nicht direkt. Aber irgendjemand könnte hier landen, weil er einen Oneliner von R vom Terminal ausführen möchte. Wenn Sie zum Beispiel nur einige fehlende Pakete installieren und beenden möchten, kann dieser Oneliner sehr praktisch sein. Ich benutze es oft, wenn ich plötzlich feststelle, dass ich einige Pakete vermisse und sie dort installieren möchte, wo ich will.

R -e 'install.packages(c("package1", "package2"))' # install to default location. 
Sudo R -e 'install.packages(c("package1", "package2"), lib="/usr/local/lib/R/site-library")' # install to location that requires root. 
92
biocyberman

Eine weitere Möglichkeit, ein R-Skript über die Befehlszeile auszuführen, wäre:

R < scriptName.R --no-save  

oder mit --save.

Siehe auch Wie werden R-Skripte am besten in der Befehlszeile (Terminal) verwendet? .

34
B.Kocis

Sie benötigen den Befehl ?Rscript, um ein R-Skript vom Terminal aus auszuführen.

Check out http://stat.ethz.ch/R-manual/R-devel/library/utils/html/Rscript.html

Beispiel

## example #! script for a Unix-alike

#! /path/to/Rscript --Vanilla --default-packages=utils
args <- commandArgs(TRUE)
res <- try(install.packages(args))
if(inherits(res, "try-error")) q(status=1) else q()
20
Mehul Rathod

So führen Sie Rmd im Befehl mit knitr und rmarkdown durch mehrere Befehle aus und laden dann eine HTML-Datei in RPubs hoch

Hier ein Beispiel: Laden Sie zwei Bibliotheken und führen Sie einen R-Befehl aus

R -e 'library("rmarkdown");library("knitr");rmarkdown::render("NormalDevconJuly.Rmd")'

R -e 'library("markdown");rpubsUpload("normalDev","NormalDevconJuly.html")'
10
Shicheng Guo

Nur zur Dokumentation. Manchmal müssen Sie den Scrip als Sudo ausführen:

Sudo Rscript path/to/your/file.R
3
Cro-Magnon

Eine weitere Möglichkeit, Rscript für * Unix-Systeme zu verwenden, ist Process Substitution .

Rscript <(zcat a.r)
# [1] "hello"

Dies entspricht natürlich der akzeptierten Antwort, ermöglicht es Ihnen jedoch, Ihre Datei zu bearbeiten und auszuführen, ohne die Leistung der Befehlszeile zu beeinträchtigen, z.

Rscript <(sed s/hello/bye/ a.r)
# [1] "bye"

Ähnlich wie Rscript -e "Rcode" kann es auch ohne Speichern in einer Datei ausgeführt werden. So könnte es in Verbindung mit Skripten verwendet werden, die R-Code erzeugen, z.

Rscript <(echo "head(iris,2)")
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1          5.1         3.5          1.4         0.2  setosa
# 2          4.9         3.0          1.4         0.2  setosa
3