643 Stimmen

Führen Sie das R-Skript von der Befehlszeile aus

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

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

sayHello()

Wie kann ich dies über die Befehlszeile ausführen?

850voto

Dason Punkte 58072

Wenn Sie möchten, dass die Ausgabe im Terminal angezeigt wird, ist es am besten, Rscript zu verwenden

Rscript a.R

Beachten Sie, dass bei Verwendung von R CMD BATCH a.R anstelle der Umleitung der Ausgabe auf die Standardausgabe und der Anzeige im Terminal eine neue Datei namens a.Rout erstellt wird.

R CMD BATCH a.R
# Überprüfen Sie die Ausgabe
cat a.Rout

Eine andere Sache, die bei der Verwendung von Rscript zu beachten ist, ist, dass das Paket methods standardmäßig nicht geladen wird, was zu Verwirrung führen kann. Wenn Sie also auf etwas angewiesen sind, das von methods bereitgestellt wird, sollten Sie es explizit in Ihrem Skript laden.

Wenn Sie wirklich den Weg ./a.R zum Aufrufen des Skripts verwenden möchten, können Sie ein entsprechendes #! oben im Skript hinzufügen

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

sayHello()

I will also note that if you're running on a *unix system there is the useful littler package which provides easy command line piping to R. It may be necessary to use littler to run shiny apps via a script? Further details can be found in this question.

164voto

biocyberman Punkte 5143

Dies beantwortet die Frage nicht direkt. Aber jemand landet vielleicht hier, weil er einen Oneliner von R aus dem Terminal ausführen möchte. Wenn Sie beispielsweise nur einige fehlende Pakete installieren und beenden möchten, kann dieser Oneliner sehr praktisch sein. Ich benutze ihn oft, wenn ich plötzlich feststelle, dass mir einige Pakete fehlen, und ich sie dort installieren möchte, wo ich möchte.

  • Um an den Standardort zu installieren:

    R -e 'install.packages(c("package1", "package2"))'
  • Um an einem Ort zu installieren, für den root Berechtigungen erforderlich sind:

    R -e 'install.packages(c("package1", "package2"), lib="/usr/local/lib/R/site-library")'

63voto

B.Kocis Punkte 1804

Noch eine Möglichkeit, ein R-Skript von der Befehlszeile aus auszuführen, wäre:

R < scriptName.R --no-save  

oder mit --save.

Siehe auch Wie kann man R-Skripts am besten über die Befehlszeile (Terminal) verwenden?.

26voto

Mehul Rathod Punkte 1244

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

Schauen Sie sich http://stat.ethz.ch/R-manual/R-devel/library/utils/html/Rscript.html an

Beispiel

## Beispiel #! Skript für Unix-ähnliche Betriebssysteme

#! /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()

14voto

Shicheng Guo Punkte 1107

Wie man Rmd in der Befehlszeile mit knitr und rmarkdown durch mehrere Befehle ausführt und dann eine HTML-Datei auf RPubs hochlädt

Hier ist 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")'

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X