2013-07-22 25 views
13

Angenommen, ich einen R-Skript habe:Wie kann ich verhindern, dass mein R-Skript jedes Mal gedruckt wird, wenn ich es ausführe?

library('nnet')  
something <- runif(50); 
print(something) 

Als ich das Skript von der Befehlszeile ausgeführt wird, druckt es:

> library('nnet') 
> something <- runif(5); 
> print(something) 
[1] 0.04665518 0.93574275 0.96387299 0.07410239 0.92834019 

Ich mag es nur drucken:

[1] 0.04665518 0.93574275 0.96387299 0.07410239 0.92834019 

und ich kann nicht herausfinden, wie das geht. Sink ("/ dev/null") tut nichts, stderr manuell umleiten tut nichts, und ich kann keine nützlichen Informationen dazu finden.

+4

Wie Sie es laufen "an der Befehlszeile"? 'Rscript foo.R' druckt nur, was Sie wollen ... –

+3

Und in R' source ("foo.R") 'würde normalerweise nichts vom Skript zeigen, es sei denn, Sie fragen es über' source ("foo.R" , echo = TRUE) '. Bitte zeigen Sie uns ** genau ** was Sie versuchen/tun. –

+1

Rscript scheint zu sein, was ich vermisst habe. Andere Beiträge in SE und anderswo führen Skripte mit "R

Antwort

19

Auflösung ist mit Rscript, und nicht mit R. Beispiele an anderer Stelle (zB How can I read command line parameters from an R script?), Ausführen von Scripts von der Kommandozeile mit

R --args args1 args2... < foo.R 
laufen

läuft mit

Rscript foo.R args1 args2 ... 

erzeugt nur die Ausgabe und nicht das Skript. Es ist auch eine viel sauberere Art, Skripte auszuführen.

+1

+1 Gute Arbeit bei der Beantwortung Ihrer eigenen Frage. –

+1

+1 Kleiner Punkt, "schlecht gemacht" ist nicht erforderlich. R hat nicht immer "RScript" gehabt und die Q & A, zu der du verlinkt bist, ist jetzt über 3 Jahre alt. Ich vermute, dass sich die Verwendung von 'RScript' zu diesem Zeitpunkt nicht in die Psyche vieler R-Benutzer eingebettet hatte. Beachten Sie auch, dass diese Beispiele Ihre Frage nicht beantworteten - Sie möchten nicht, dass Ihr Skript wiederholt wird, was eine andere Sache ist und es falsch ist, für einen Mangel an präkognitiven Fähigkeiten zu kritisieren. –

+1

@GavinSimpson Fairer Punkt. Ich habe die Antwort entsprechend aktualisiert. –

2

Nicht ein R-Benutzer selbst, aber ist das etwas, das Ihnen hilfreich sein könnte? How can I run an 'R' script without suppressing output?

aus der verknüpften Frage:

print.eval Parametersatz TRUE angeben, wenn Sie nur die Ausgabe (und nicht die Befehle) erhalten möchten. Wenn Sie die Befehle ebenfalls benötigen, sollten Sie echo auf TRUE setzen (was bedeutet, print.eval auf TRUE zu setzen).

Zum Beispiel:

source('myscript.R', print.eval = TRUE) 
2
source('path/name/filnam.R' , verbose=FALSE) 
1

Für direkt im Terminal läuft:

R --slave --args dense 12 0.98 < transformMatrixToSparseMatrix.R 

Für R-Skript von Python ausgeführt wird:

process = subprocess.Popen(["R --slave --args %s %d %.2f < /path/to/your/rscript/transformMatrixToSparseMatrix.R" % (, 12, 0.98) ], shell=True) 
process.wait() 

Siehe auch this reference

0

Für RStudio IDE (Version 1.1.383) in Windows:

Drücken Strg + Umschalt + Enter Tasten gesamte Skript mit echo (ausführlich)

Drücken Strg laufen + Umschalt + S Tasten gesamte Skript ausführen, ohne Echo (nicht ausführlich)

Verwandte Themen