[R] updating n within for(i in 1:n) loop

Timothy H. Keitt tklistaddr at keittlab.bio.sunysb.edu
Mon Aug 26 23:09:09 CEST 2002


The problem is that the '1:n' in 'for(i in 1:n)' is only evaluated once
at the beginning of the loop, so altering 'n' later does not change the
loop behavior. Try something like:

i <- 0
repeat {
	i <- i + 1
	cat(i, '\n')
	if (i > 9) break
}

T.

On Mon, 2002-08-26 at 14:50, Huntsinger, Reid wrote:
> I think a while or repeat is what you want. I believe the 1:n in the for
> loop is evaluated only once, at the beginning, but I could be wrong.
> 
> Reid Huntsinger
> 
> -----Original Message-----
> From: Prasad, Rajiv [mailto:Rajiv.Prasad at pnl.gov]
> Sent: Monday, August 26, 2002 1:55 PM
> To: R-Help (E-mail)
> Subject: [R] updating n within for(i in 1:n) loop
> 
> 
> Hi folks:
> 
> I think I'm having problems with figuring this one out:
> 
> test1 <- function()
> {
>   n <- 2
> 
>   for(i in 1:n)
>   {
>     cat(paste("i =", i, "\n")); flush.console()
>     n <- 5  # version 1
>     #n <<- 5  # version 2
>     #assign("n", 5, envir = environment(test1))  # version 3
>   }
> }
> 
> I need the for(.) loop to run (say) n=5 times within the function, but I do
> not know that before the loop begins.  In other words, n is to be updated
> during computations within the for(.) loop.  This code prints "i = 1" and "i
> = 2" only.  If I modify test1(.) to use version 2 or version 3 of the
> assignment, there is no change to the output, and I end up with an "n" in
> the parent environment with value 5.  So the problem is to assign 5 to n in
> the calling environment of the for(.) loop??  (I'm sure my terminology is
> quite mixed up here -- please feel free to comment.)
> 
> How do I do this?
> 
> Thanks in advance.
> 
> > version
>          _              
> platform i386-pc-mingw32
> arch     i386           
> os       mingw32        
> system   i386, mingw32  
> status                  
> major    1              
> minor    5.1            
> year     2002           
> month    06             
> day      17             
> language R              
> 
> 
> Rajiv
> --------
> Rajiv Prasad
> Postdoctoral Research Associate, Hydrology Group
> Pacific Northwest National Laboratory, P.O. Box 999, MSIN K9-33
> Richland, WA 99352
> Voice: (509) 375-2096  Fax: (509) 372-6089  Email: rajiv.prasad at pnl.gov
> 
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
> -.-
> r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> Send "info", "help", or "[un]subscribe"
> (in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._.
> _._
> 
> ------------------------------------------------------------------------------
> Notice: This e-mail message, together with any attachments, contains information of Merck & Co., Inc. (Whitehouse Station, New Jersey, USA) that may be confidential, proprietary copyrighted and/or legally privileged, and is intended solely for the use of the individual or entity named on this message.  If you are not the intended recipient, and have received this message in error, please immediately return this by e-mail and then delete it.
> 
> ==============================================================================
> 
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> Send "info", "help", or "[un]subscribe"
> (in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list