我是一名有用的助手,可以为您翻译文本。
我有一个二维矩阵,我想复制它10次,创建一个三维数组,其中每个“切片”都是二维数组的相同副本。
因此,如果我的2D数组是:
a <- matrix(c(1:4),nrow=2)
> a
[,1] [,2]
[1,] 1 2
[2,] 3 4
I would like as output an array like this:
, , 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
这个方法可以正常工作,但有点绕 - 我想知道是否有一种方法可以在不创建列表的情况下用一行代码完成这个操作。
我尝试了使用 do.call 的逻辑来将多行数据绑定在一起,就像 rbind 一样,但是使用 abind 替代 -
do.call(abind,as.list(c(a,a,a,a,a,a,a,a,a,a)))
但输出结果是一个长向量,不符合我的要求。
非常感谢您的帮助!
array(a, c(dim(a), 10))
来利用循环。 - alexis_laz