R 基于矩阵行的拆分

R 基于矩阵行的拆分,r,matrix,split,divide,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 ... ... 一个选项是使用rep创建一个逻辑索引,然后使用它来拆分矩阵的行序列,根据列表中的索引向量对矩阵进行子集化 out <-lapply(split(seq_len(nrow(m1)), rep(rep(c(

我有一个关于除法矩阵的问题

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

将形成第一个矩阵

r1
r2
r3
r4
r5
r6
r7
r8
r11
r12
r13
...
...
第二个矩阵将由

r9
r10
r19
r20
...
...

一个选项是使用
rep
创建一个逻辑索引,然后使用它来
拆分
矩阵的行序列
,根据
列表中的索引向量对
矩阵
进行子集化

out <-lapply(split(seq_len(nrow(m1)), rep(rep(c(TRUE, FALSE), c(8, 2)), 
            length.out = nrow(m1))), function(i) m1[i, ] )
数据
set.seed(24)

m1可能最简单的方法是定义指数,然后对矩阵进行子集:

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]

idx10@user20650这很好,我正在考虑
split
.default`然后我认为我必须将矩阵转换为data.frame。要做到这一点,它工作起来比我的“for”循环快得多,但我还有最后一个问题;有没有一种方法可以在没有标题的情况下形成“out”矩阵?@Erdem你指的是每个矩阵的列名吗?
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]