【问题标题】:Combining matrices with different dimensions in an array in R在R中的数组中组合具有不同维度的矩阵
【发布时间】:2014-04-22 17:24:43
【问题描述】:

我想知道是否有办法将两个不同维度的矩阵组合成一个数组。我知道有函数 abind(),但该函数不允许矩阵的不同维度。我需要这个,因为我使用 JAGS(带有 R2jags 或 rjags)并且这些包不允许数据以列表形式出现。但是,当我输入数组时它确实有效。

当我有以下两个矩阵时:

a <- matrix(0, 3, 2)
b <- matrix(0, 4, 6)
a

     [,1] [,2]
[1,]    0    0
[2,]    0    0
[3,]    0    0

b

     [,1] [,2] [,3]
[1,]    0    0    0
[2,]    0    0    0
[3,]    0    0    0
[4,]    0    0    0

我最好是这样的:

abind(a,b, along = 3)

, , 1

     [,1] [,2]
[1,]    0    0
[2,]    0    0
[3,]    0    0

, , 2

     [,1] [,2] [,3]
[1,]    0    0    0
[2,]    0    0    0
[3,]    0    0    0
[4,]    0    0    0

【问题讨论】:

    标签: arrays r matrix multidimensional-array


    【解决方案1】:

    您可以尝试将矩阵视为一维数组,从技术上讲它们就是这样。

    如果您查看矩阵'a'3X3 并尝试访问a[2][1],例如它等效于a[2*3 + 1]。您可以使用它来遍历您的矩阵并将它们组合起来。

    【讨论】:

    • 你能演示一下 a[2*3+1] 吗?如果我有以下矩阵 a
    • 您的意思是尺寸为 (6,3,2) 的三维矩阵吗?看看这里stackoverflow.com/questions/5920944/…
    • 没有值为 1:6、3 行和 2 列的 2D 矩阵 :)
    • 在X行Y列的二维数组中数组a[i][j] = a[i*x + j]意思是一样的
    【解决方案2】:
    d=list(a,b)
    

    我希望这是你想要的 就是这样

    【讨论】:

    • OP 想要将矩阵“组合成一个数组”,而不是一个列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多