From: Mike Jones <MikeJones_at_westat.com>

Date: Thu, 27 Dec 2007 18:08:26 -0500

cat("i = ",i,"garbage = ",garbage,"\n")

}

[9,] 0.392034868 9 7

[10,] 0.655076045 10 8

Date: Thu, 27 Dec 2007 18:08:26 -0500

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:p.dalgaard_at_biostat.ku.dk]
Sent: Thursday, December 27, 2007 5:36 PM
To: Mike Jones

Cc: r-help_at_stat.math.ethz.ch

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: '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 ______________________________________________ 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.Received on Thu 27 Dec 2007 - 23:11:07 GMT

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Fri 28 Dec 2007 - 20:30:21 GMT.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*