【问题标题】:Randomizing a matrix multiple times多次随机化矩阵
【发布时间】:2015-09-20 12:55:23
【问题描述】:

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

          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。我知道我可以通过使用A1 <- A[,sample(ncol(A))] 给我A1 来随机化A 行,可能如下所示:

         [1] [2] [3] [4] 
Gene A    5   3   4   7  
Gene B    9   4   3   2
Gene C    5   8   6   1

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

【问题讨论】:

    标签: r permutation


    【解决方案1】:

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

    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
    

    如果我们按行独立采样,如 cmets 中提到的@Frank,我们可以使用applyMARGIN=1 来逐行执行sampleing。我们可以将输出的列名更改为原始矩阵('A')的列名。

    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
    

    数据

    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")))
    

    【讨论】:

    • 我不确定您的采样是否正确。我的印象是每一行都应该是独立的,比如replicate(10, t(apply(m,1,sample)) )
    • @Frank 我也被 OP 的代码 DataRN[,sample(ncol(A))] 弄糊涂了,不清楚 DataRN 是什么。
    • 是的,我认为@Frank 是正确的。我想做一些排列测试,所以我想独立随机化每一行。另外我刚刚编辑了我的帖子,DataRN[,sample(ncol(A))] 实际上应该是 A[,sample(ncol(A))]
    • @NelLau 感谢您的回复。我在关注你的代码。已更正。
    • @akrun 感谢您的帮助。关于lst &lt;- replicate(n, t(apply(A,1,sample)) , simplify=FALSE) 的几个小问题。当我使用该代码时,似乎原始矩阵已被随机化为向量的形式。有没有办法单独检索每个随机向量并将其转换为矩阵或数据框,以防万一我想分别查看每个矩阵?有没有办法将原始矩阵A 中的列名添加到每个新的随机矩阵中?
    猜你喜欢
    • 2014-06-25
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    • 2020-10-04
    • 1970-01-01
    • 2016-06-30
    • 2017-08-26
    相关资源
    最近更新 更多