What you have not done is told us how you run the script.

On Mon, 22 Nov 2010, Nathan Miller wrote:

Hello,

I am trying write a script that includes a prompt for user input using
readlines() and was told that folks at R-devel might be able to help.

(But this is an R-help question.)

readline() and readLines() are separate functions: there is no readlines().

Your script is very far from self-contained, and you haven't told us how you run it. Here's a working example:

toucan% cat foo.R
cat("What is the O2 saturation in umole/L? ")
foo <- scan("stdin", 0,  n=1, quiet = TRUE)
print (foo)

toucan% Rscript foo.R
What is the O2 saturation in umole/L? 45
[1] 45


I am running into the problem that when I run readlines() as a single line
the prompt works perfectly, but when I try to run a block of code which
includes the readline function, the script doesn't wait for the user input.
I have seen this question posted before when I did a search, but I didn't
find an suitable answer. Is there a means of ensuring that the script does
not proceed until a value has been entered to readline(). Can I put readline
in a function that will wait for input?

But this is all based on a false assumption: ?readline says

     In non-interactive use the result is as if the response was RETURN
     and the value is ‘""’.

So you cannot usefully use readline() in what most people understand by 'running a script', as that is 'non-interactive use'.

Are there other options for getting user input that allow require that the
script wait for user input?

In the code I want the user to input the value for O2sat using
O2sat=as.numeric(readline("What is the O2 saturation in umole/L?"))

The problem is that when I run this entire block of code rather than running
individual functions, the program doesn't wait for the user input and just
continues to the next line of code. Does anyone have a work around for this
type of problem?

Thanks for your help,

Nate

#################


O2sat=as.numeric(readline("What is the O2 saturation in umole/L?"))

r=function(x) {
       deltaO2=meanblank-q[2]
       umoleO2=(deltaO2/100)*O2sat
   }

umoleO2perL=r(minO2mean)
umolesO2consumed=umoleO2perL*Vial_vol
names(umoleO2consumed)="umoleO2consumed"
O2consumed=data.frame(filenames,umoleO2consumed)
O2consumed

        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


--
Brian D. Ripley,                  rip...@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
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to