[R] Nested for loops
Daniel Nordlund
djnordlund at verizon.net
Tue Jul 14 07:55:21 CEST 2009
> -----Original Message-----
> From: r-help-bounces at r-project.org
> [mailto:r-help-bounces at r-project.org] On Behalf Of Michael Knudsen
> Sent: Monday, July 13, 2009 10:39 PM
> To: r-help at 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
More information about the R-help
mailing list