3
我有一个二维矩阵,我想复制10次以创建一个三维数组,其中数组的每个'切片'是一个相同的副本二维数组。复制2维矩阵来创建一个3维数组(在R中)
所以,如果我的二维数组分别是:
a <- matrix(c(1:4),nrow=2)
> a
[,1] [,2]
[1,] 1 3
[2,] 2 4
我想作为输出像这样的数组:
, , 1
[,1] [,2]
[1,] 1 2
[2,] 3 4
, , 2
[,1] [,2]
[1,] 1 2
[2,] 3 4
....
, , 10
[,1] [,2]
[1,] 1 2
[2,] 3 4
我看到这个页面(Duplicate matrix to form list),其中, OP正在寻找复制矩阵到一个列表,我改编然后转换为一个列表:
b<-rep(list(a), 10) # from original post
array(unlist(b), dim = c(nrow(b[[1]]), ncol(b[[1]]), length(b))) # line I added
This工作正常,但它有点迂回 - 我想知道是否有办法在一行内完成此操作,而无需通过创建列表。
我试图施加在与rbind到多个行粘结在一起做的方式一个do.call的逻辑,但使用代替abind -
do.call(abind,as.list(c(a,a,a,a,a,a,a,a,a,a)))
但输出是一个长向量等不我在找什么。
任何帮助,非常感谢!
修改你的方法一点,你可以使用'阵列(A,C(点心(一),10))'以循环 –
也是一个好主意的好处,谢谢! –