基于矩阵行拆分

Splitting a matrix row based

我对除法矩阵有疑问。

我有100行1024列的数据。我想将该矩阵拆分为 2 个子矩阵,这样 8 行到矩阵 1,2 行到矩阵 2

将形成第一个矩阵

r1
r2
r3
r4
r5
r6
r7
r8
r11
r12
r13
...
...

第二个矩阵将由

组成
r9
r10
r19
r20
...
...

一个选项是使用 rep 创建一个逻辑索引,然后将其用于 split matrix 的行序列,基于 matrix 的子集list

中的索引向量
out <-lapply(split(seq_len(nrow(m1)), rep(rep(c(TRUE, FALSE), c(8, 2)), 
            length.out = nrow(m1))), function(i) m1[i, ] )

此外,正如评论中提到的@user20650,?split.data.frame 也可以用于矩阵(基于文档)

The data frame method can also be used to split a matrix into a list of matrices, and the replacement form likewise, provided they are invoked explicitly.

out1 <- split.data.frame(m1, rep(rep(c(TRUE, FALSE), c(8, 2)), 
          length.out = nrow(m1)))

数据

set.seed(24)
m1 <- matrix(rnorm(100 * 1024), nrow = 100, ncol = 1024)

可能最简单的方法是定义索引,然后对矩阵进行子集化:

idx10 <- 1:10*10 # contains 10, 20, 30, ..., 100
idx9 <- idx10 - 1 #contain 9, 19, 29, ..., 99

idx <- c(idx9, idx10)

a <- matrix(rnorm(200), nrow = 100)

a_910 <- a[idx,]
a_rest <- a[-idx]