Conditionally incrementing a loop counter: Take 2
Mike Jones wrote:
My apologies for not including a working example.
Here it is:
for (i in 1:10){
cat("initial i = ",i,"\n")
x <- runif(1)
if (x > 0.7){
i <- i-1
}
cat("second i = ",i,"\n")
}
When I ran this i got what follows, so there were four cases where I
wanted the i not to increment.
initial i = 1
second i = 1
initial i = 2
second i = 1
initial i = 3
second i = 3
initial i = 4
second i = 3
initial i = 5
second i = 4
initial i = 6
second i = 6
initial i = 7
second i = 7
initial i = 8
second i = 7
initial i = 9
second i = 9
initial i = 10
second i = 10
Is this the kind of effect you want?
> x <- runif(10)
> cbind(x, 1:10, cumsum(x < .7))
x
[1,] 0.384165631 1 1
[2,] 0.392715845 2 2
[3,] 0.895936431 3 2
[4,] 0.910242185 4 2
[5,] 0.689987301 5 3
[6,] 0.237071326 6 4
[7,] 0.225032680 7 5
[8,] 0.001856286 8 6
[9,] 0.392034868 9 7
[10,] 0.655076045 10 8
If you insist on using a loop, you need to separate the loop control
from the manipulation of i, as in (e.g.)
i <- 0
for (j in 1:10){
i <- i + 1
cat("initial i = ",i,"\n")
x <- runif(1)
if (x > 0.7){
i <- i-1
}
cat("second i = ",i,"\n")
}
-----Original Message-----
From: Mike Jones
Sent: Thursday, December 27, 2007 4:35 PM
To: 'r-help at lists.R-project.org'
Subject: Conditionally incrementing a loop counter
Hi,
I am trying a for loop from 1 to 10 by 1. However, if a condition does
not get met, I want to "throw away" that iteration. So if my loop is
for (i in 1:10)
and i is say, 4 and the condition is not met then I don't want i to go
up to 5. Is there a way to do that? I can't seem to manually adjust i
because from what I understand, R creates 10 long vector and uses that
to "loops thru" and I'm not sure how to get at the index of that
vector. Any suggestions? Thanks in advance.
Mike Jones
Westat
1650 Research Blvd. RE401
Rockville, MD 20850
Ph: 240.314.2312
[[alternative HTML version deleted]]
______________________________________________ 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.
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