根据标题,有没有办法将数据切片附加到R?中现有的N维矩阵的n-by-n矩阵?
例如,我有以下内容:
one <- array(1, dim = c(3, 3))
two <- array(2, dim = c(3, 3))
three <- array(3, dim = c(6, 6))
我希望将其转换为可以使用的6x6x3矩阵,如下所示:
[[1]]
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 1 1 NA NA NA
[2,] 1 1 1 NA NA NA
[3,] 1 1 1 NA NA NA
[4,] NA NA NA NA NA NA
[5,] NA NA NA NA NA NA
[6,] NA NA NA NA NA NA
[[2]]
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 2 2 2 NA NA NA
[2,] 2 2 2 NA NA NA
[3,] 2 2 2 NA NA NA
[4,] NA NA NA NA NA NA
[5,] NA NA NA NA NA NA
[6,] NA NA NA NA NA NA
[[3]]
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 3 3 3 3 3 3
[2,] 3 3 3 3 3 3
[3,] 3 3 3 3 3 3
[4,] 3 3 3 3 3 3
[5,] 3 3 3 3 3 3
[6,] 3 3 3 3 3 3
我知道如何通过我自己的代码来实现这一点,所以如果有一个现有的库函数支持这个,我会更感兴趣。
答案 0 :(得分:6)
除了abind
之外,我想您需要弄清楚矩阵的最大大小,并创建用适当数量的NA填充的矩阵?
padmat <- function(X,m,n) {
Y <- matrix(NA,m,n)
Y[1:nrow(X),1:ncol(X)] <- X
Y
}
one <- array(1, dim = c(3, 3))
two <- array(2, dim = c(3, 3))
three <- array(3, dim = c(6, 6))
mlist <- list(one,two,three)
maxrows <- max(sapply(mlist,nrow))
maxcols <- max(sapply(mlist,ncol))
mlist2 <- lapply(mlist,padmat,m=maxrows,n=maxcols)
library(abind)
abind(mlist2,along=3)