【发布时间】:2014-03-04 00:39:49
【问题描述】:
我想要做的是给定一个列表 [mat1, mat2, mat3, ..., matn],其中每个矩阵都是 4x4 创建一个大的 4nx4 矩阵:
mat1
mat2
mat3
我使用循环来执行此操作,但我的列表大约有 12000 个矩阵,并且需要很长时间……我怎样才能以更有效的方式执行此操作?
【问题讨论】:
-
您好,请尝试通过将部分文本从标题移到问题正文中来澄清您的问题。
我想要做的是给定一个列表 [mat1, mat2, mat3, ..., matn],其中每个矩阵都是 4x4 创建一个大的 4nx4 矩阵:
mat1
mat2
mat3
我使用循环来执行此操作,但我的列表大约有 12000 个矩阵,并且需要很长时间……我怎样才能以更有效的方式执行此操作?
【问题讨论】:
do.call(rbind, list(mat1, mat2, mat3))
或
## Collect the matrices into a list
MATS <- lapply(paste0("mat", 1:n), function(x) get(x))
## rbind them all into one
do.call(rbind, MATS)
【讨论】:
abind 包对这种事情很有用,因为它会直接接受一个列表。操作矩阵和数组绝对值得了解。
library(abind)
mat <- matrix(1, ncol = 4, nrow = 4)
abind(list(mat, mat), along = 1)
【讨论】: