2010-10-14 10 views
15

Sto provando a scrivere uno script R interattivo. Per esempio:Come includere l'input interattivo nello script da eseguire dalla riga di comando

try.R:

print("Entr some numbers. >",quote=F) 
a = scan(what=double(0)) 
print a 
q() 

Ora, se l'eseguo sulla riga di comando come

$ R --no-save < try.R 

Si cerca di ottenere lo stdin da try.R, dando il seguente errore:

> print("Entr some numbers. >",quote=F) 
[1] Entr some numbers. > 
> a = scan(what=double(0)) 
1: print a 
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, : 
    scan() expected 'a real', got 'print' 
Execution halted 

ho provato un paio di altri metodi, ma tutti danno errori. Per esempio:

$ R CMD BATCH try.R 
$ Rscript try.R 

Allora, come faccio a scrivere uno script che funziona R dalla riga di comando di shell * nix, e può prendere in input interattivo da parte dell'utente?

risposta

19

Prova questa:

cat("What's your name? ") 
x <- readLines(file("stdin"),1) 
print(x) 

Speriamo che alcuni variante che funziona per voi.

+2

IIRC solo 'readlines (n = 1)' dovrebbe fare troppo. –

+0

@Dirk Eddelbuettel: non sembra funzionare. – highBandWidth

+1

Il mio male, mi dispiace. Mi è capitato di aver usato 'readLines()' senza un argomento di file, per default allo stdin, allo stesso tempo - vedi r-help stamattina. –

5

Che cosa ha funzionato per me su Windows con RStudio 0.98.945 e la versione R 3.1.1 è stato:

cat("What's your name? ") 
    x <- readLines(con=stdin(),1) 
    print(x) 
Problemi correlati