Gina Zetkin
Gina Zetkin

Reputation: 333

R error type "Subscript out of bounds"

I am simulating a correlation matrix, where the 60 variables correlate in the following way:

The first loop works well, but not the second and third ones. I get this error message:

Error in `[<-`(`*tmp*`, m:m + 1, c(1:m - 1, m + 2:w), value = 0.2) : 
  subscript out of bounds

Error in `[<-`(`*tmp*`, m:m + 1, c(1:m - 1, m + 2:w), value = 0.2) : 
  subscript out of bounds

I would really appreciate any hints, since I don't see the loop commands get to exceed the matrix dimensions. Thanks a lot in advance!

Upvotes: 2

Views: 42997

Answers (1)

Roland
Roland

Reputation: 132576

Note that : takes precedence over +. E.g., n:n+1 is the same as n+1. I guess you want n:(n+1).

The maximal value of w is 60:

w <- 60
m <- 1
m+2:w
#[1]  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
#[49] 51 52 53 54 55 56 57 58 59 60 61

And 61 is out of bounds. You need to add a lot of parentheses.

Upvotes: 3

Related Questions