Ich habe eine Datei mit dem Namen a.r
, es hat chmod
von 755,
sayHello <- function(){
print('hello')
}
sayHello()
Wie kann ich das über die Kommandozeile ausführen?
#!/usr/bin/env Rscript
Ich habe eine Datei mit dem Namen a.r
, es hat chmod
von 755,
sayHello <- function(){
print('hello')
}
sayHello()
Wie kann ich das über die Kommandozeile ausführen?
#!/usr/bin/env Rscript
Antworten:
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 R CMD BATCH a.R
dieser Option anstelle der Umleitung der Ausgabe zum Standardausgang 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 methods
Paket standardmäßig nicht geladen wird, was zu Verwirrung führen kann. Wenn Sie sich also auf etwas verlassen, das diese Methoden bieten, sollten Sie es explizit in Ihr Skript laden.
Wenn Sie die ./a.R
Art und Weise des Aufrufs des Skripts wirklich verwenden möchten, können Sie #!
oben im Skript eine entsprechende hinzufügen
#!/usr/bin/env Rscript
sayHello <- function(){
print('hello')
}
sayHello()
Ich werde auch bemerken, dass wenn Sie auf einem * Unix-System laufen, es das nützliche Littler- Paket gibt, das eine einfache Befehlszeilen- Weiterleitung an R bietet. Ist es möglicherweise erforderlich, Littler zu verwenden, um glänzende Apps über ein Skript auszuführen? Weitere Details finden Sie in dieser Frage .
R CMD BATCH
ist schrecklich. Alles andere als das ...
R CMD INSTALL -l ~/R/lib-dev
Dies beantwortet die Frage nicht direkt. Aber jemand könnte hier landen, weil er einen Oneliner von R vom Terminal aus ausführen möchte. Wenn Sie beispielsweise nur einige fehlende Pakete installieren und beenden möchten, kann dieser Oneliner sehr praktisch sein. Ich benutze es oft, wenn ich plötzlich herausfinde, dass ich einige Pakete vermisse und sie dort installieren möchte, wo ich will.
So installieren Sie am Standardspeicherort:
R -e 'install.packages(c("package1", "package2"))'
So installieren Sie an einem Speicherort, für den root
Berechtigungen erforderlich sind :
R -e 'install.packages(c("package1", "package2"), lib="/usr/local/lib/R/site-library")'
Rscript -e "getwd()"
im Terminal verwenden. Rscript druckt nur die Befehlsausgabe und nicht die vollständige R-Startnachricht.
r -e "cat(getwd(),'\n')"
wenn Sie weniger installiert haben. In dieser Antwort erklärt Dirk Eddelbuettel den Unterschied zwischen Littler und Rscript.
R -e 'install.packages("package", repos="http://cran.us.r-project.org")'
R -r 'options(warn=2); install...'
werden, um die Ausführung anzuhalten und einen Fehlercode ungleich Null zu erhalten, falls die Installation fehlschlägt. Ansonsten sind install.packages
Fehler nur Warnungen.
Eine weitere Möglichkeit, ein R-Skript über die Befehlszeile auszuführen, ist:
R < scriptName.R --no-save
oder mit --save
.
Siehe auch Was ist der beste Weg, um R-Skripte in der Befehlszeile (Terminal) zu verwenden? .
Sie benötigen den ?Rscript
Befehl, um ein R-Skript vom Terminal aus auszuführen.
Überprüfen Sie 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()
So führen Sie Rmd im Befehl mit knitr und rmarkdown mit mehreren Befehlen 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")'
R -e 'markdown::rpubsUpload("normalDev","NormalDevconJuly.html")'
Eine weitere Möglichkeit, Rscript für * Unix-Systeme zu verwenden, ist die Prozessersetzung .
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 sparen, z.
Rscript <(sed s/hello/bye/ a.r)
# [1] "bye"
Ähnlich lässt Rscript -e "Rcode"
es sich auch ausführen, ohne in einer Datei zu speichern. Es kann also in Verbindung mit Skripten verwendet werden, die R-Code generieren, 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
Nur zur Dokumentation müssen Sie das Skript manchmal wie folgt ausführen sudo
:
sudo Rscript path/to/your/file.R