2013-07-22 20 views
13

Załóżmy, że mam skryptu R:Jak mogę uniknąć drukowania mojego skryptu R przy każdym uruchomieniu?

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

Kiedy uruchomić ten skrypt z wiersza poleceń, wypisuje:

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

Chciałbym go tylko wydrukować:

[1] 0.04665518 0.93574275 0.96387299 0.07410239 0.92834019 

i nie mogę wymyślić, jak to zrobić. sink ("/ dev/null") nic nie robi, przekierowanie stderr ręcznie nic nie robi i nie mogę znaleźć żadnych przydatnych informacji na ten temat.

+4

Jak się uruchomienie go "w linii poleceń"? 'Rscript foo.R' drukuje tylko to, co chcesz ... –

+3

Wewnątrz R' source ("foo.R") 'normalnie nie pokazywałoby nic ze skryptu, chyba że poprosisz o to poprzez' source ("foo.R" , echo = TRUE) '. Pokaż ** dokładnie to, co próbujesz/robisz. –

+1

Wydaje się, że Rscript był tym, czego mi brakowało. Inne posty na SE i gdzie indziej uruchamiają skrypty z "R

Odpowiedz

19

rozwiązaniem jest prowadzony z Rscript, a nie R. Przykłady w literaturze (np How can I read command line parameters from an R script?) prowadzone skryptów z linii polecenia z

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

działa z

Rscript foo.R args1 args2 ... 

produkuje tylko dane wyjściowe, a nie skrypt. Jest to również znacznie czystszy sposób uruchamiania skryptów.

+1

+1 Dobra robota odpowiadając na własne pytanie. –

+1

+1 Niewielki punkt, "źle zrobiony" jest niepoprawny. R nie zawsze miał "RScript", a link do którego prowadzisz Q & A ma teraz ponad 3 lata. Podejrzewam, że użycie 'RScript' nie osadziło się w psychice wielu użytkowników R w tym momencie. Zauważ też, że te przykłady nie odpowiadały na twoje pytanie - nie chcesz, aby twój scenariusz się odbił, co jest inną kwestią i nie należy krytykować za brak umiejętności prekognitywnych. –

+1

@GavinSimpson Fair punkt. Odpowiednio zaktualizowałem odpowiedź. –

2

Nie sam użytkownik R, ale czy jest to coś, co może być pomocne? How can I run an 'R' script without suppressing output?

Od połączonego pytanie:

określić print.eval zestaw parametrów do TRUE jeśli chcesz dostać tylko wyjście (a nie poleceń). Jeśli potrzebujesz tych poleceń, powinieneś ustawić echo na TRUE (co oznacza ustawienie print.eval na TRUE).

Na przykład:

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

przypadku działa na terminalu bezpośrednio:

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

Do uruchomienia scenariusza R Pythonie:

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

Patrz także this reference

0

Na RStudio IDE (wersja 1.1.383) w systemie Windows:

Naciśnięcie Ctrl + Shift + Enter klucze uruchomić cały skrypt z echa (gadatliwym)

Naciśnięcie Ctrl + Shift + S klucze uruchomić cały skrypt bez echa (nie rozwlekły)