【发布时间】:2019-12-05 21:09:01
【问题描述】:
我们从一组矩阵开始。参考集合中的所有矩阵,我想创建一个新矩阵,它表示集合中每个矩阵的列的组合。
集合中的每个矩阵都有不同的行数。当我们组合矩阵时,新行应该用 NA 填充。新矩阵采用集合中每个矩阵的前 3 个非 NA 列并将它们连接起来。
设置
set.seed(4)
mat1 <- matrix(nrow =9, ncol=9, runif(81))
mat2 <- matrix(nrow=10, ncol =9, runif(90))
mat3 <- matrix(nrow=11, ncol =9, runif(99))
mat4 <- matrix(nrow =9, ncol=9, runif(81))
mat2[,1:3] <- NA
mat3[,1:5] <- NA
mat4[,1:4] <- NA
mat_set <- list(mat1,mat2,mat3, mat4)
新矩阵:
绑定:
mat1[,1:3], mat2[,6:9], mat3[,6:9], mat4[,5:8]
我希望新矩阵具有与集合中最大矩阵相同的行数(在本例中 nrow =11)。当集合中的矩阵行不等于 11 时,用 NA 填充它们的条目。因此,对于 Mat1,使目前不存在的第 10 行和第 11 行对所有列都等于 NA。此步骤必须在将矩阵绑定在一起之前进行。
输出形式: 理想情况下,我希望代码自动检测集合中矩阵的 NA 列,然后加入 FIRST 3 Non-NA 列。此外,如果它可以在大量矩阵/数据帧上工作,那就太好了。谢谢!
输出的形式应该是:
cbind.fill(mat1[,1:3], mat2[,7:9], mat3[,7:9], mat4[,7:9], fill= NA)
但不必手动输入集合中的每个矩阵。
【问题讨论】: