Dear Mike, You could use a repeat loop and manage the index yourself:
i <- 0 repeat{ x <- runif(1) if (x < .1){ i <- i + 1 cat("x = ", x, "\n") } if (i == 10) break } But if your example problem reflects your actual application, why not just generate uniform random numbers on the interval (0, .1)? I hope this helps, John -------------------------------- John Fox, Professor Department of Sociology McMaster University Hamilton, Ontario, Canada L8S 4M4 905-525-9140x23604 http://socserv.mcmaster.ca/jfox > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > project.org] On Behalf Of Mike Jones > Sent: December-27-07 6:08 PM > To: Peter Dalgaard > Cc: [EMAIL PROTECTED] > Subject: Re: [R] Conditionally incrementing a loop counter: Take 2 > > 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. ______________________________________________ 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.