首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新排列矩阵R的一种更好的方法

重新排列矩阵R的一种更好的方法
EN

Stack Overflow用户
提问于 2018-01-19 03:42:16
回答 2查看 663关注 0票数 1

我有一个我的问题的解决方案,它不是很优雅,也不是可伸缩的,我希望得到一些帮助。

我有一个50行30列的矩阵。我想把它改成5列300行。现在这应该很简单,但我必须将列6-10移到1-5下面,然后是11-15,依此类推。

代码语言:javascript
复制
fill <- rep(1:20)
m <- matrix(fill, nrow = 50, ncol = 30)

a <-m[,1:5]
b <-m[,6:10]
c <-m[,11:15]
d <-m[,16:20]
e <-m[,21:25]
f <-m[,26:30]

hope <- rbind(a,b,c,d,e,f)

我如何结束与原始矩阵可能是我的问题的原因,但我已经走了一定的轨道,并希望整理这个问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-19 04:48:33

你可以通过构建一个索引向量,单独使用矩阵子集来完成这项工作。

代码语言:javascript
复制
x <- matrix(m[(1:50+250*rep(0:5,each=50))+50*rep(0:4,each=300)],ncol=5)
all.equal(x,hope)
[1] TRUE
票数 3
EN

Stack Overflow用户

发布于 2018-01-19 04:35:43

您可以将m划分为一个矩阵列表,然后使用do.call将它们组合在一起。例如,

代码语言:javascript
复制
dim(do.call(rbind, lapply(split(1:ncol(m), ceiling(1:ncol(m)/5)), function(i) m[,i])))
#[1] 300   5

代码语言:javascript
复制
dim(do.call(rbind, lapply(seq(1, ncol(m), 5), function(i) m[,i:(i+4)])))
#[1] 300   5
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48329126

复制
相关文章

相似问题

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