基于矩阵行

时间:2019-04-07 16:35:34

标签: r matrix split divide

我对除法矩阵有疑问。

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

将形成第一个矩阵

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

,第二个矩阵将形成为

r9
r10
r19
r20
...
...

2 个答案:

答案 0 :(得分:2)

一种选择是使用rep创建一个逻辑索引,然后使用它来split的{​​{1}}行序列,根据索引向量将matrix子集化在matrix

list

此外,正如评论中提到的@ user20650一样,out <-lapply(split(seq_len(nrow(m1)), rep(rep(c(TRUE, FALSE), c(8, 2)), length.out = nrow(m1))), function(i) m1[i, ] ) 也可以用于矩阵(基于文档)

  

如果显式调用矩阵,则也可以使用数据框方法将矩阵拆分为矩阵列表,并且替换形式也是如此。

?split.data.frame

数据

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

答案 1 :(得分:1)

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

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]