假设我有一个等维矩阵列表。例如:基于矩阵列表填充矩阵
mat = matrix(c(1,2,3,11,12,13,21,22,23), nrow = 3, ncol = 3)
mat.list = rep(list(mat), 3)
mat.list[[2]] = mat.list[[2]]*2.5
mat.list[[3]] = mat.list[[3]]*3.5
我要的是长度(mat.list)*的NcoI(垫)来填充尺寸长度(mat.list)* nrow(垫)超级矩阵 - 可能初始化如下:
super.mat = matrix(NA, nrow = length(mat.list)*nrow(mat), ncol = length(mat.list)*ncol(mat))
根据这样的规则: super.mat [N *(I-1)+ N,N *(J-1)+ N] = mat.list [[N] [I,J ]
其中:
N = length(mat.list)
i和j表示矩阵N的行和列索引mat.list
我想在东西线:
populateMat = function(N, n, i, j, mat, super.mat){
super.mat[N*(i-1)+n,N*(j-1)+n] = mat[i,j]
}
一些联合应用功能在mat.list
执行:
outer(1:nrow(mat), 1:ncol(mat), Vectorize(function(i,j) populateMat(N,1,i,j,mat,super.mat)))
这里mat
只是mat.list
的单个元素,应该可以工作,但显然我需要一些帮助才能真正实现它的工作。