我有个关于矩阵除法的问题。
我有100行和1024列的数据。我想把这个矩阵分解成两个子矩阵,例如8行到矩阵1,2行到矩阵2。
第一个矩阵将形成
r1
r2
r3
r4
r5
r6
r7
r8
r11
r12
r13
...
...
而第二个矩阵将与
r9
r10
r19
r20
...
...
发布于 2019-04-07 17:30:04
一个选项是用rep
创建一个逻辑索引,然后使用它来split
matrix
的行序列,根据list
中的索引向量子集matrix
。
out <-lapply(split(seq_len(nrow(m1)), rep(rep(c(TRUE, FALSE), c(8, 2)),
length.out = nrow(m1))), function(i) m1[i, ] )
此外,正如注释中提到的@ used 20650,?split.data.frame
也可以用于矩阵(基于文档)
数据帧方法还可以用于将矩阵拆分为矩阵列表,替换形式也可以使用,只要它们被显式调用。
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)
发布于 2019-04-07 18:24:06
最简单的方法可能是定义索引,然后对矩阵进行子集:
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]
https://stackoverflow.com/questions/55561285
复制相似问题