【发布时间】:2014-01-14 13:29:30
【问题描述】:
我正在模拟一个相关矩阵,其中 60 个变量以下列方式相关:
- 每两个变量(1-2、3-4...59-60)更高(0.6)
-
对于每组 12 个变量 (1-12,13-24...),中等 (0.3)
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 } }
第一个循环运行良好,但第二个和第三个循环不行。我收到此错误消息:
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
我非常感谢任何提示,因为我没有看到循环命令超出矩阵维度。提前非常感谢!
【问题讨论】:
-
尝试将
cat()或print()语句放入您的代码中以查看发生了什么,或使用options(error=recover)让R 在发生错误时将您转储到浏览器中... -
请注意
:优先于+。例如,n:n+1与n+1相同。我猜你想要n:(n+1)。 -
@Roland "额外的括号 FTW" :-)