【问题标题】:Creating vectors with indices in R在 R 中创建带有索引的向量
【发布时间】:2014-04-12 11:09:15
【问题描述】:

我正在尝试创建 10 个向量,每个向量中有 10 个值,并且值应该具有正态分布。向量应该是 v1, v2, v3 ...

我尝试了 for 循环,但语法:

for(i in 1:10) {
    v[i] <- rnorm(10)
}

没用。我尝试了很多品种,但没有结果,也没有在网上找到任何解决方案。

【问题讨论】:

    标签: r for-loop vector


    【解决方案1】:

    创建大量“松散”向量并不是一个好主意。最好以合适的形式收集它们,例如在matrixlistdata.framelist 的一种)中。然后,您可以通过各种子集技术访问各个元素(请参阅 ?Extracthere

    在您的情况下,您可以尝试例如replicate:

    m <- replicate(n = 10, expr = rnorm(10))
    m
    

    这将产生一个包含n 列的矩阵,其中每一列都是expr 的结果,即rnorm(10)

    【讨论】:

      【解决方案2】:

      R 中没有向量向量。您可以在matrix 或异构数据结构(如list)上使用二维模拟
      更多详情见:http://adv-r.had.co.nz/Data-structures.html

      matrix 方法是:

      matrix(rnorm(100),nrow=10)
      

      list 方法是:

      lapply(1 : 10, function (i) rnorm(10))
      

      【讨论】:

        【解决方案3】:

        向量通常不能嵌套(即你不能有向量的向量)。 R 有一个特殊的形式——list

        v = lapply(1 : 10, function (i) rnorm(10))
        

        通常,您希望将其表示为 data.frame,但是:

        setNames(data.frame(v), NULL)
        

        setNames 用于删除 R 自动生成的坏列名。)

        【讨论】:

          猜你喜欢
          • 2018-04-20
          • 1970-01-01
          • 1970-01-01
          • 2020-01-27
          • 2013-12-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-05
          相关资源
          最近更新 更多