[R] Pause in non-interactive mode

Prof Brian Ripley ripley at stats.ox.ac.uk
Fri Feb 5 10:45:19 CET 2010


You have not told us your version of R.  In earlier versions of R 
readline() reads a line from the script (and input buffering affects 
which line: a number of packages fail their example checks on some 
platforms because of this).  In R-devel it returns "" immediately.

To make this work you need to use Rscript, which distinguishes stdin() 
and "stdin".  Try out

% Rscript foo.R

where  foo.R is

message("a")
invisible(readLines("stdin", n=1))
message("b")

and see ?stdin and ?file for why it works.

On Fri, 5 Feb 2010, Jonne Zutt wrote:

> Dear all,
>
> I've found this nice code fragment on the web
> (from Jan T. Kim if I'm correct):
>
> hitReturn <- function(msg)
> {
> 	invisible(readline(sprintf("%s -- hit return", msg)));
> }
>
> But it does not seem to work in non-interactive mode
> ( I mean, when I start a script like this: R --vanilla < script.R )
>
> It simply continues, I guess the stdin is not connected?
>
> Does somebody know how to make it work.
>
> My script plots a few graphs (in X11 windows) and I don't want them to
> disappear immediately.
> A Sys.sleep(infinite) would probably work, but I thought there might
> be a better solution?
>
> Thanks,
> Jonne.

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-help mailing list