我对除法矩阵有疑问。
我有100行和1024列的数据。我想将该矩阵分成2个子矩阵,这样8行到矩阵1和2行到矩阵2
将形成第一个矩阵
r1
r2
r3
r4
r5
r6
r7
r8
r11
r12
r13
...
...
,第二个矩阵将形成为
r9
r10
r19
r20
...
...
答案 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]