2013-07-22 26 views
13

Supponiamo che io sono uno script R:Come posso evitare di stampare il mio script R ogni volta che lo eseguo?

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

Quando eseguo questo script dalla riga di comando, esso stampa:

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

Vorrei che per stampare solo:

[1] 0.04665518 0.93574275 0.96387299 0.07410239 0.92834019 

e non riesco a capire come farlo. sink ("/ dev/null") non fa nulla, il reindirizzamento di stderr manualmente non fa nulla, e non riesco a trovare alcuna informazione utile su questo.

+4

Come stai eseguendo lo "alla linea di comando"? 'Rscript foo.R' stampa solo quello che vuoi ... –

+3

E in R' source ("foo.R") 'normalmente non mostrerebbe nulla dello script a meno che tu non lo chieda via' source ("foo.R" , echo = TRUE) '. Per favore mostraci ** esattamente ** cosa stai provando/facendo. –

+1

Rscript sembra essere stato quello che mi mancava. Altri post su SE e altrove eseguono script con "R

risposta

19

risoluzione è eseguire con rscript, e non con R. Esempi altrove (ad esempio How can I read command line parameters from an R script?), eseguire gli script dalla riga di comando con

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

in esecuzione con

Rscript foo.R args1 args2 ... 

produce solo l'output e non lo script. È anche un modo molto più semplice per eseguire script.

+1

+1 Buon lavoro rispondendo alla tua stessa domanda. –

+1

+1 Punto secondario, "mal fatto" non richiesto. R non ha sempre avuto 'RScript' e il Q & A al quale ti colleghi ha più di 3 anni. Sospetto che l'uso di 'RScript' non si sia incorporato nella psiche di molti utenti R a quel punto. Nota anche che quegli esempi non rispondevano alla tua domanda - non vuoi che il tuo script riecheggia, che è una questione diversa ed è sbagliato criticare per la mancanza di abilità precognitive. –

+1

@GavinSimpson Fair point. Ho aggiornato la risposta di conseguenza. –

2

Non è un utente R me stesso, ma è qualcosa che potrebbe esserti utile? How can I run an 'R' script without suppressing output?

Dalla domanda collegata:

specificare print.eval set di parametri per TRUE se si desidera ottenere solo l'uscita (e non i comandi). Se è necessario anche i comandi, impostare echo su TRUE (che implica l'impostazione di print.eval su TRUE).

Ad esempio:

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

Per l'esecuzione nel terminale direttamente:

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

Per l'esecuzione di script in R da Python:

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

Vedi anche this reference

0

Per RStudio IDE (versione 1.1.383) in Windows:

.210

Premendo Ctrl + Maiusc + Invio tasti funzionano intero script con echo (verbose)

Premendo Ctrl + Shift + S chiavi corrono intero script senza eco (non-verbose)

Problemi correlati