首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拆分数据矩阵

拆分数据矩阵
EN

Stack Overflow用户
提问于 2013-06-11 04:42:10
回答 2查看 300关注 0票数 0

我有一个数据矩阵,其中包含100,000行的值,这些值对应于几种细胞类型的甲基化值。我想在集群热图中直观地显示甲基化的变化。为了使数据更易于管理,我正在考虑每10行左右创建一个新的数据矩阵。有什么简单的方法可以做到这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-11 04:46:52

使用seq和参数的组合。例如:

代码语言:javascript
复制
m1 <- matrix(runif(100000*10), ncol = 10)

m2 <- m1[seq(from = 1, to = nrow(m1), by = 10), ]

> dim(m2)
[1] 10000    10

这是怎么回事?看看这是做什么的:

代码语言:javascript
复制
> sq <- seq(from = 1, to = nrow(m1), by = 10)
> head(sq)
[1]  1 11 21 31 41 51
> tail(sq)
[1] 99941 99951 99961 99971 99981 99991
> nrow(m1)
[1] 100000

我们指定每一步从第一行到最后一行递增10。当我们到达序列的末尾时,即使我们将nrow(m1) ( 100000)指定为99991中的最后一个元素,也会得到第1、11、21行等。这是因为99991 + 10会使我们超出from参数限制(超过100000),因此不包括在序列中。

票数 3
EN

Stack Overflow用户

发布于 2013-06-11 04:49:46

尝试执行以下命令,该命令将获取大型矩阵m并生成一个较小矩阵的列表。它生成一系列索引,这些索引在每个chunk.length值处中断,然后收集这些块。

代码语言:javascript
复制
list.of.matrices <- lapply(X=seq.int(1, nrow(m), by=chunk.length)),
                           FUN=function (k) {
                             m[k + seq_len(chunk.length) - 1, ])
                           })

但是,如果您有100,000行,那么单独保存所有这些块对于RAM来说将是浪费的。也许,您可以只对子集执行所需的计算,并且只保存结果。这只是个建议。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17032460

复制
相关文章

相似问题

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