R错误类型“下标超出范围"; [英] R error type "Subscript out of bounds"

查看:96
本文介绍了R错误类型“下标超出范围";的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在模拟一个相关矩阵,其中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+1n+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错误类型“下标超出范围";的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆