将矩阵添加到3D阵列的第一维

时间:2016-05-24 16:08:19

标签: r

如果标题不是很准确,我很抱歉,我没有找到一个简单的方法来表达它。我在R中看似简单的操作时遇到了麻烦。

假设我有一个矩阵A 2x2(元素Aij i = 1,2 j = 1,2),我想在三维数组B 2x2x2中“转换”这个矩阵,其中:Bhij = Aij为h = 1,2。 我有以下代码:

A=cbind(c(1,2), c(3,4))
B<-array(NA, dim=c(2,2,2)
for (h in 1:2){
   B[h,,]<-A
}

但我想在不使用循环的情况下做同样的事情。有没有办法做到这一点?

非常感谢,

的Aurelien

2 个答案:

答案 0 :(得分:2)

使用R和rep中的列主导存储系统的简单方法如下:

B[] <- rep(A, each=2)

[]强制B维持其数组结构,而rep从A中剥离维度并返回一个向量。

答案 1 :(得分:2)

有一个包,abind,包含一个同名的函数,可以一步完成:

library(abind)
B <-abind(A,A, along=3)
B
#----------------
, , 1

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

, , 2

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