usar script programar para r

programar - shell script expect



Cómo incluir una entrada interactiva en el script que se ejecutará desde la línea de comandos (3)

Estoy tratando de escribir un script R interactivo. Por ejemplo:

try.R:

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

Ahora, si lo ejecuto en la línea de comando como

$ R --no-save < try.R

Intenta obtener el stdin de try.R, dando el siguiente error:

> 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

Intenté algunos otros métodos pero todos dan errores. Por ejemplo:

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

Entonces, ¿cómo escribo un script R que funcione desde la línea de comandos del shell * nix, y pueda recibir información interactiva del usuario?


La respuesta de @Joshua Ulrich está bien para Linux, pero se bloquea en macOS y debe terminarse con Ctrl-D.

Esta es una solución alternativa tanto para Linux como para macOS:

#!/usr/bin/env Rscript print(system("read -p ''Prompt: '' input; echo $input", intern = TRUE))


Lo que me funcionó en Windows con RStudio 0.98.945 y R versión 3.1.1 fue:

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


Prueba esto:

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

Esperemos que alguna variante de eso funcione para ti.