在R中替换和两个for循环

时间:2014-05-03 10:43:59

标签: r

我想要一个长度为200的向量res,其中包括20次重复的随机生成值除以2,即r[i],我怎样才能在R中得到它?我写了下面的代码,但它只是保存每个迭代值,而不是整个迭代。

r = rep(0, 10)
res = matrix(0, nrow=200, ncol=1)
for(j in 1:20){
  for(i in 1:10){
    x = rnorm(10, 0, 1)
    r[i] = x/2
  }
  res = rbind(r)
}

1 个答案:

答案 0 :(得分:2)

正如罗兰在对你的问题的评论中所说,为此编写两个循环并不是一个好习惯。但是,您可以这样做

res = rep(0, 200)
r = rep(0, 10)
for(j in 1:20){
    for(i in 1:10){
        x = rnorm(1, 0, 1)
        r[i] = x/2
    }
    res[((j-1)*10+1):(j*10)] = r
}

至于你的解决方案,有一些问题:

  1. 如果您只需要一个向量
  2. ,则无需定义矩阵res = matrix(0, nrow=200, ncol=1)
  3. rnorm(10,0,1)返回10个值的向量,因此将其分配给r[i](只需要一个值)是不正确的
  4. rbind用于连接两个矢量/矩阵/ ...按行,所以只使用一个参数就没有意义