【问题标题】:simulate over for loop and save values in vector模拟 for 循环并将值保存在向量中
【发布时间】:2019-08-08 10:10:24
【问题描述】:

这个输出给了我 70 个 s 的值。我希望将值保存在向量中,但此代码不起作用。 (它只给了我 j 循环最后一次运行的 7 个值)。我需要帮助谢谢。

a<-c(-2,3,44,2,455,6,5) 
v<-numeric()
for(i in 1:7){
    for(j in 1:10){
        s<-rnorm(1,0,1)+a[i]
        print(s) 
    }
}

a<-c(-2,3,44,2,455,6,5) 
v<-numeric()
for(i in 1:7){
    for(j in 1:10){
        s<-rnorm(1,0,1)+a[i]
        v[j]<-s 
    }
}

【问题讨论】:

  • 简单:replicate(10, rnorm(7) + a)。而已。然后,您可以根据需要制作一个矢量。
  • 对不起,我需要两个 for 循环,因为它只是更大代码的示例

标签: r


【解决方案1】:

以下代码将生成一个 7x10 矩阵,其中包含问题所要求的向量。

a <- c(-2, 3, 44, 2, 455, 6, 5)

set.seed(1234)
v <- numeric(7)
mat <- matrix(nrow = 7, ncol = 10)
for(i in 1:7){
  for(j in 1:10){
    s <- rnorm(1, 0, 1) + a[i]
    v[j] <- s 
  }
  mat[i, ] <- v
}

【讨论】:

    【解决方案2】:

    只是为了好玩,更多R喜欢:

    sapply(a,function(i){
      unlist(lapply(1:10,function(j){
        rnorm(1, 0, 1)+i
      }))
    })           
    
    
    [,1]     [,2]     [,3]     [,4]     [,5]     [,6]     [,7]
     [1,] -3.295962 3.577820 44.41137 2.001589 454.9179 5.970766 5.603785
     [2,] -2.571828 2.259008 43.73227 2.643309 455.1282 5.997461 5.653614
     [3,] -2.084684 2.822167 42.13170 3.650840 455.7986 6.904609 4.438424
     [4,] -2.079247 4.085084 43.45838 1.502186 453.7527 5.436269 7.839745
     [5,] -2.476034 3.030010 44.50353 2.976790 454.0916 6.599311 6.996301
     [6,] -1.902021 3.215603 45.15090 1.295879 455.5759 6.817221 5.841700
     [7,] -2.743911 3.224363 44.83895 2.069357 454.2933 7.585631 5.460610
     [8,] -3.285025 3.414776 44.89513 5.128345 454.7776 6.267330 5.156807
     [9,] -3.303973 3.756869 42.94848 1.590817 456.0266 5.303505 4.445430
    [10,] -2.900838 1.912637 44.86769 3.227049 454.3163 5.434879 7.545130
    

    不需要你定义空矩阵

    【讨论】:

      猜你喜欢
      • 2017-07-31
      • 2021-11-05
      • 2023-03-06
      • 2018-07-27
      • 1970-01-01
      • 2021-12-24
      • 2018-07-25
      • 1970-01-01
      • 2014-12-07
      相关资源
      最近更新 更多