[R] R programming question

Charles C. Berry cberry at tajo.ucsd.edu
Thu Jun 14 19:03:39 CEST 2007


Gary,

You are asked to

 	PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
 	and provide commented, minimal, self-contained, reproducible code.

when posting.

You have not provided such code, and until you do I doubt we can help.

When I wrap your lines in a dummy function:

foo <- function(){
 	cat("Enter value for lower Linf :\n")
 	L1<-scan(n=1)
 	cat("Enter value for upper Linf :\n")
 	L2<-scan(n=1)
 	cat("Enter Linf interval :\n")
 	int_L<-scan(n=1)
 	cat("Enter value for lower K :\n")
 	K1<-scan(n=1)
 	cat("Enter value for upper K :\n")
 	K2<-scan(n=1)
 	cat("Enter K interval :\n")
 	int_K<-scan(n=1)
 	list(L1,L2,int_L,K1,K2,int_K)
       }

and run it as you claim

 	event <- 1

  	if (event == 1 ) foo() else bar()

it prompts for all input and prints the expected result.

> sessionInfo()
R version 2.5.0 (2007-04-23)
i386-pc-mingw32

locale:
LC_COLLATE=English_United States.1252;LC_CTYPE=English_United 
States.1252;LC_MONETARY=English_United 
States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252

attached base packages:
[1] "stats"     "graphics"  "grDevices" "utils"     "datasets"  "methods" 
"base"
>


Chuck

On Thu, 14 Jun 2007, Nelson, Gary (FWE) wrote:

> Dear All.,
>
> I've created R-code for which a user will be asked to choose between 2
> analyses.  I've written one function for each type of analysis.  Within
> each function, the users is prompted to enter information.  An example
> is:
>
> cat("Enter value for lower Linf :\n")
>     L1<-scan(n=1)
>     cat("Enter value for upper Linf :\n")
>     L2<-scan(n=1)
>     cat("Enter Linf interval :\n")
>     int_L<-scan(n=1)
>     cat("Enter value for lower K :\n")
>     K1<-scan(n=1)
>     cat("Enter value for upper K :\n")
>     K2<-scan(n=1)
>     cat("Enter K interval :\n")
>     int_K<-scan(n=1)
>
> I thought I could evaluate and run the appropriate function at the end
> of the program by:
>
> if(event==1) explore() else evaluate()
>
>
> If I run the whole program and either explore() or evaluate() is run,
> the first four prompted entries are skipped over.  The console output
> for event==1 is TRUE looks like:
>
>> if(event==1) explore() else evaluate()
> Enter value for lower Linf :
> 1:
> Read 0 items
> Enter value for upper Linf :
> 1:
> Read 0 items
> Enter Linf interval :
> 1:
> Read 0 items
> Enter value for lower K :
> 1:
> Read 0 items
> Enter value for upper K :
> 1:
>
> I then tried another way.  I created
>
> runcase<-ifelse(event==1,"explore","evaluate")
>
> At the bottom of the program I used:
>
> eval(call(x=runcase))
>
> But I still get the same problem.
>
> Any suggestions?
>
>
> Thanks for your help
>
> Gary A. Nelson, Ph.D
> Massachusetts Division of Marine Fisheries
> 30 Emerson Avenue
> Gloucester, MA 01930
> Phone: (978) 282-0308 x114
> Fax: (617) 727-3337
> Email: Gary.Nelson at state.ma.us
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

Charles C. Berry                            (858) 534-2098
                                             Dept of Family/Preventive Medicine
E mailto:cberry at tajo.ucsd.edu	            UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/  La Jolla, San Diego 92093-0901



More information about the R-help mailing list