如果标题不是很准确,我很抱歉,我没有找到一个简单的方法来表达它。我在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
答案 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