问题描述
我正在模拟一个相关矩阵,其中60个变量通过以下方式相关:
I am simulating a correlation matrix, where the 60 variables correlate in the following way:
- 每两个变量(1-2,3-4 ... 59-60)更高(0.6) 每12个变量组(1-12,13-24 ...)
-
中度(0.3)
- more highly (0.6) for every two variables (1-2, 3-4... 59-60)
moderate (0.3) for every group of 12 variables (1-12,13-24...)
mc <- matrix(0,60,60)
diag(mc) <- 1
for (c in seq(1,59,2)){ # every pair of variables in order are given 0.6 correlation
mc[c,c+1] <- 0.6
mc[c+1,c] <- 0.6
}
for (n in seq(1,51,10)){ # every group of 12 are given correlation of 0.3
for (w in seq(12,60,12)){ # these are variables 11-12, 21-22 and such.
mc[n:n+1,c(n+2,w)] <- 0.2
mc[c(n+2,w),n:n+1] <- 0.2
}
}
for (m in seq(3,9,2)){ # every group of 12 are given correlation of 0.3
for (w in seq(12,60,12)){ # these variables are the rest.
mc[m:m+1,c(1:m-1,m+2:w)] <- 0.2
mc[c(1:m-1,m+2:w),m:m+1] <- 0.2
}
}
第一个循环效果很好,但是第二个和第三个循环效果不好.我收到此错误消息:
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!
推荐答案
请注意,:
优先于+
.例如,n:n+1
与n+1
相同.我想你想要n:(n+1)
.
Note that :
takes precedence over +
. E.g., n:n+1
is the same as n+1
. I guess you want n:(n+1)
.
w
的最大值为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
61超出范围.您需要添加很多括号.
And 61 is out of bounds. You need to add a lot of parentheses.
这篇关于R错误类型“下标超出范围";的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!