在子集中拆分大矩阵,R

时间:2016-05-09 10:38:06

标签: r

我想为矩阵创建子组,每个子组包含相同数量的列。例如,有一个1000行和420列的矩阵,我想按顺序拆分成35个子矩阵,比如第一个包含前12个列,第二个包含第二个12个列,依此类推。我想我可以使用功能虹膜。请帮帮我!

iris[c()]

2 个答案:

答案 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]第二个子矩阵,依此类推。