Skip to content

flow control

2 messages · Lo, Ken, Christos Hatzis

#
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
#
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