首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多次随机化矩阵

多次随机化矩阵
EN

Stack Overflow用户
提问于 2015-09-20 03:30:37
回答 1查看 43关注 0票数 1

我有一个用矩阵A表示的高通量基因数据。

代码语言:javascript
复制
          C1 C2 C3 C4
 Gene A   3  5  7  4
 Gene B   2  4  9  3
 Gene C   1  6  8  5

我希望继续随机化这个矩阵,比如说10次,并将每个新的随机矩阵保存为R中的一个新对象,这样我就可以将A随机化到A1A2,. A10中,然后我可以在需要的时候保存这些检索A1,.A10。我知道,我可以通过使用A为我提供A1来随机化A1行,这可能如下所示:

代码语言:javascript
复制
         [1] [2] [3] [4] 
Gene A    5   3   4   7  
Gene B    9   4   3   2
Gene C    5   8   6   1

是否有可能自动生成更多A的逐行排列,而不是一次又一次手动输入这一行代码?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-20 03:37:52

我们可以使用replicate随机化matrix 'n‘时间。我们指定simplify=FALSE以获得list输出。

代码语言:javascript
复制
n <- 10
lst <- replicate(n, A[,sample(ncol(A))], simplify=FALSE)
names(lst) <- paste0('A', seq(n))
lst$A1
#       C1 C2 C4 C3
#Gene A  3  5  4  7
#Gene B  2  4  3  9
#Gene C  1  6  5  8

如果我们是独立地按行采样,正如@Frank在注释中提到的那样,我们可以使用applyMARGIN=1一起执行sample按行执行。我们可以将输出的列名更改为原始矩阵('A')的列名。

代码语言:javascript
复制
lst <- replicate(n, t(apply(A,1,sample)) , simplify=FALSE)
names(lst) <- paste0('A', seq(n))
lst <- lapply(lst, function(x) {colnames(x) <- colnames(A); x})
lst$A1
#       C1 C2 C3 C4
#Gene A  7  4  3  5
#Gene B  2  4  9  3
#Gene C  5  8  1  6

数据

代码语言:javascript
复制
A <- structure(c(3L, 2L, 1L, 5L, 4L, 6L, 7L, 9L, 8L, 4L, 3L, 5L), 
.Dim = 3:4, .Dimnames = list(
c("Gene A", "Gene B", "Gene C"), c("C1", "C2", "C3", "C4")))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32675506

复制
相关文章

相似问题

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