Since I didn't want the i to increment in the loop when the condition is not met, then in my example I wanted the loop to actually run 14 times instead of the 10 since I wanted 4 of the iterations to be thrown away, or ignored. I still haven't been able to figure this out. Going the "while" route doesn't seem to work for me either.
nums <- numeric(10) i <- 1 garbage <- 0 while (i <= 10){ x <- runif(1) cat("x = ",x,"\n") if (x < 0.1){ nums[i] <- x i <- i + 1 } else{ garbage <- garbage+1 } cat("i = ",i,"garbage = ",garbage,"\n") } -----Original Message----- From: Peter Dalgaard [mailto:[EMAIL PROTECTED] Sent: Thursday, December 27, 2007 5:36 PM To: Mike Jones Cc: [EMAIL PROTECTED] Subject: Re: [R] 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: '[EMAIL PROTECTED]' >> 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@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 ~~~~~~~~~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 ______________________________________________ R-help@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.