> -----Original Message----- > From: r-help-boun...@r-project.org > [mailto:r-help-boun...@r-project.org] On Behalf Of Michael Knudsen > Sent: Monday, July 13, 2009 10:39 PM > To: r-help@r-project.org > Subject: [R] Nested for loops > > Hi, > > I have spent some time locating a quite subtle (at least in my > opinion) bug in my code. I want two nested for loops traversing the > above-diagonal part of a square matrix. In pseudo code it would > something like > > for i = 1 to 10 > { > for j = i+1 to 10 > { > // do something > } > } > > However, trying to do the same in R, my first try was > > for (i in 1:10) > { > for (j in (i+1):10) > { > // do something > } > } > > but there's a problem here. For i=10, the last for loop is over 11:10. > Usually programming laguages would regard what corresponds to 11:10 as > empty, but A:B with A bigger than B is in R interpreted as the numbers > from B to A in reverse order. > > Is there a clever way to make nested loops like the one above in R? >
Michael, If you are tryuly interested in the ABOVE diagonal elements (i.e. not including diagonal element temselves), the your loop should be for (i in 1:9) { for (j in (i+1):10) { // do something } } And you avoid your current problem. Hope this is helpful, Dan Daniel Nordlund Bothell, WA USA ______________________________________________ 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.