我想为矩阵创建子组,每个子组包含相同数量的列。例如,有一个1000行和420列的矩阵,我想按顺序拆分成35个子矩阵,比如第一个包含前12个列,第二个包含第二个12个列,依此类推。我想我可以使用功能虹膜。请帮帮我!
iris[c()]
答案 0 :(得分:3)
不确定这是否是你所追求的,但这是一个可重现的例子:
# Define matrix
M = matrix(
c(1:20),
nrow=2,
ncol=10)
# Split into 5 submatrices of equal size
lapply(split(M, rep(1:5, each = 4)), matrix, ncol = 2)
$`1`
[,1] [,2]
[1,] 1 3
[2,] 2 4
$`2`
[,1] [,2]
[1,] 5 7
[2,] 6 8
$`3`
[,1] [,2]
[1,] 9 11
[2,] 10 12
$`4`
[,1] [,2]
[1,] 13 15
[2,] 14 16
$`5`
[,1] [,2]
[1,] 17 19
[2,] 18 20
答案 1 :(得分:3)
您可以使用
将1000×420矩阵转换为1000×12×35矩阵dim(x) <- c(1000, 12, 35)
其中x
是原始矩阵。然后x[, , 1]
为您提供第一个1000×12子矩阵,x[, , 2]
第二个子矩阵,依此类推。