[R] Readline - wait for user input

Peter Dalgaard P.Dalgaard at biostat.ku.dk
Wed May 23 16:36:00 CEST 2007


Forest Floor wrote:
> Hi,
>
> I've seen various posts on this question, but still can't get the code 
> right. 
>
> If I run the following code one line at a time, it works fine.  If I run 
> it together as a block, however, it doesn't wait for the input and gives 
> an error.
>
> There must be a way to have are pause/wait for an answer, but I can't 
> seem to find it.  Thanks!  J
>
> Code:
>
> choosefunction <- function(){readline("1. linear, 2. linear with lag, 3. 
> nonlinear ")}
> ans <- as.integer(choosefunction())
> if (ans==1){K2=x1}
> if (ans==2){K2=x2 }
> if (ans==3){K2=x3 }
> ans
>
> Error text:
>  > ans <- as.integer(choosefunction())
> 1. linear, 2. linear with lag, 3. nonlinear if (ans==1) {K2=x1}]}
> Warning message:
> NAs introduced by coercion
>  > if (ans==2){K2=x2) }
> Error in if (ans == 2) { : missing value where TRUE/FALSE needed
>  > if (ans==3){K2=x3}
> Error in if (ans == 3) { : missing value where TRUE/FALSE needed
>  > ans
> [1] NA
>   
As you may have realized already, the issue is that choosefunction()
takes the next command as its input. Since "if (ans==1){K2=x1}" isn't an
integer "ans" becomes NA, and it just goes downhill from there.

An extra set of braces may help

> choosefunction <- function(){readline("1. linear, 2. linear with lag, 3.
+ nonlinear ")}
> {ans <- as.integer(choosefunction())
+ if (ans==1){K2=x1}
+ if (ans==2){K2=x2 }
+ if (ans==3){K2=x3 }
+ ans}
1. linear, 2. linear with lag, 3.
nonlinear 3
Error: object "x3" not found

It still doesn't quite work, but the reason(s) for that should be plain
to see.

-- 
   O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark          Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)                  FAX: (+45) 35327907



More information about the R-help mailing list