[R] FW: flow control

Christos Hatzis christos.hatzis at nuverabio.com
Wed Mar 4 22:08:15 CET 2009


Hi Ken,

The help page for ?"for" says that:

The index seq in a for loop is evaluated at the start of the loop; changing
it subsequently does not affect the loop. The variable var has the same type
as seq, and is read-only: assigning to it does not alter seq.

So you cannot do what you want to do with a for loop.  But you could do what
you want with a while loop:

i <- 0
while(i < 20) {
	i <- i + 1
	cat(i, "\n")
	if(i %% 5 == 0) i <- i + 2
}

-Christos

> -----Original Message-----
> From: r-help-bounces at r-project.org 
> [mailto:r-help-bounces at r-project.org] On Behalf Of Lo, Ken
> Sent: Wednesday, March 04, 2009 3:53 PM
> To: r-help at r-project.org
> Subject: [R] FW: flow control
> 
> Hi all,
> 
> I need a little help with flow control in R.  What I'd like 
> to do is to advance a for loop by changing its counter.  
> However, what seems obvious to me does not yield the proper 
> results.  An example of my problem is
> 
> 
> for (i in seq(1, some_number, some_increment)){
> 	<some stuff>
> 	if (some_condition == T) i <- i + 2;  #want to advance 
> the loop by 2 }
> 
> Whenever the counter goes to the next step, the next item in 
> the original sequence seq(1, some_number, some_increment) 
> replaces the counter value.  Is there a way for me to do this?
> 
> Best,
> 
> Ken
> 
> 	
> 
> ______________________________________________
> R-help at r-project.org 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.
> 
>




More information about the R-help mailing list