首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于矩阵行的分割

基于矩阵行的分割
EN

Stack Overflow用户
提问于 2019-04-07 16:35:33
回答 2查看 1.5K关注 0票数 2

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

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

第一个矩阵将形成

代码语言:javascript
运行
复制
r1
r2
r3
r4
r5
r6
r7
r8
r11
r12
r13
...
...

而第二个矩阵将与

代码语言:javascript
运行
复制
r9
r10
r19
r20
...
...
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-07 17:30:04

一个选项是用rep创建一个逻辑索引,然后使用它来split matrix的行序列,根据list中的索引向量子集matrix

代码语言:javascript
运行
复制
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也可以用于矩阵(基于文档)

数据帧方法还可以用于将矩阵拆分为矩阵列表,替换形式也可以使用,只要它们被显式调用。

代码语言:javascript
运行
复制
out1 <- split.data.frame(m1, rep(rep(c(TRUE, FALSE), c(8, 2)), 
          length.out = nrow(m1)))

数据

代码语言:javascript
运行
复制
set.seed(24)
m1 <- matrix(rnorm(100 * 1024), nrow = 100, ncol = 1024)
票数 3
EN

Stack Overflow用户

发布于 2019-04-07 18:24:06

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

代码语言:javascript
运行
复制
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]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55561285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档