【问题标题】:how to stack groups of columns into a new matrix in r?如何将列组堆叠成r中的新矩阵?
【发布时间】:2013-11-20 22:29:06
【问题描述】:

我在 R 中有一个 3d 数组,说维度是 500*3*5,称之为数据。所以有 5 片矩阵,每片有 500 行和 3 列。现在我想创建一个垂直堆叠 5 个切片的新矩阵。所以输出有 500*5 行和 5 列,它看起来像这样:

[dim1]   [ dim3 ]       [1]       [2]        [3]       

 1          1           data     data        data
 1          2           data     data        data
 1          3           data     data        data
 1          4           data     data        data
 1          5           data     data        data
 2
 2
 2
 ..
 500          1           data     data        data
 500          2           data     data        data
 500          3           data     data        data
 500          4           data     data        data
 500          5           data     data        data

所以对于每 500 行,重复原始数组的第 2 和第 3 维,使得 column1 重复原始行索引,column2 重复旧的 z 维索引,第 3-5 列是 3 列数据(数字和有缺失值)。我只是在这里使用了数字 5,在我的数据中这个数字要大得多,所以我需要能够更普遍地做到这一点。谢谢!!!

【问题讨论】:

    标签: arrays r matrix


    【解决方案1】:

    a 成为你的 3d 数组,你可以这样做:

    n <- dim(a)
    b <- aperm(a, c(3,1,2))
    dim(b) <- c(n[3] * n[1], n[2])
    

    如果你想在左边添加暗淡索引,你可以这样做:

    b <- cbind(rev(expand.grid(dim3 = 1:n[3], dim1 = 1:n[1])), b)   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-08
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      • 2019-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多