R 基于矩阵行的拆分
我有一个关于除法矩阵的问题 我有100行1024列的数据。我想把这个矩阵分成2个子矩阵,这样8行到矩阵1,2行到矩阵2 将形成第一个矩阵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(
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]