【问题标题】:subsetting matrix observations in RR中的子集矩阵观察
【发布时间】:2014-10-28 06:55:06
【问题描述】:

我有一个矩阵 x1 如下

    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 63 64 65 66 67
 0  0 1 1 1 1 1 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 1  1 0 1 0 1 1 0 0 0 0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0
 2  1 0 0 0 0 0 0 0 0 0  0  1  1  1  1  0  0  0  0  0  0  0  0  0  0
77  1 0 0 0 0 0 0 0 0 0  0  1  1  1  1  0  0  0  0  0  0  0  0  0  0
 3  0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  1  1  1  1  1
 4  0 0 0 0 0 0 0 1 0 0  0  0  0  0  0  0  1  1  1  1  0  0  0  0  0
 5  0 0 0 0 0 0 1 1 1 1  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 6  0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 7  0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 8  0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 9  0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 10 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 11 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 12 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 13 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 14 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 15 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 16 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 17 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 18 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 19 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 63 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 64 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 65 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 66 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 67 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

有一些不同的组合。

    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 63 64 65 66 67
 0  0 1 1 1 1 1 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 1  1 0 1 0 1 1 0 0 0 0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0
 2  1 0 0 0 0 0 0 0 0 0  0  1  1  1  1  0  0  0  0  0  0  0  0  0  0
77  1 0 0 0 0 0 0 0 0 0  0  1  1  1  1  0  0  0  0  0  0  0  0  0  0
 3  0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  1  1  1  1  1
 4  0 0 0 0 0 0 0 1 0 0  0  0  0  0  0  0  1  1  1  1  0  0  0  0  0
 5  0 0 0 0 0 0 1 1 1 1  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0

 6  0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 .  . . . . . . . . . .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
 .  . . . . . . . . . .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
 .  . . . . . . . . . .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
 67 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

我正在寻找的是一个程序,它将这个矩阵 x1 子集,这样每个唯一的组合都存储在一个新的矩阵中,例如,x1 中的第一行应该存储在一个新的矩阵 y1 中。

第二个唯一的组合(这个组合有两行)

    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 63 64 65 66 67
 2  1 0 0 0 0 0 0 0 0 0  0  1  1  1  1  0  0  0  0  0  0  0  0  0  0
77  1 0 0 0 0 0 0 0 0 0  0  1  1  1  1  0  0  0  0  0  0  0  0  0  0

这两行都应该存储在一个新的矩阵 y2 中。第三个唯一组合应存储在矩阵 y3 ....等等....所有这些都应该基于初始矩阵 x1 自动发生。

任何有关如何执行此操作的建议都会有所帮助。

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以试试:

      split(as.data.frame(x2),do.call(paste0,as.data.frame(x2))) #this keeps it as data.frame in the list
    

    如果您想根据来自x1 的唯一行拆分矩阵。这将在列表中存储为matrix

    lst <- lapply(split(1:nrow(x1),do.call(paste0, as.data.frame(x1))), function(i) x1[i,]) 
    lst[[6]]
    #   0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 63 64 65 66 67
    #2  1 0 0 0 0 0 0 0 0 0  0  1  1  1  1  0  0  0  0  0  0  0  0  0  0
    #77 1 0 0 0 0 0 0 0 0 0  0  1  1  1  1  0  0  0  0  0  0  0  0  0  0
    

    【讨论】:

    • 那是完美的。谢谢:)
    • @Tyrone Williams 很高兴它有帮助。
    最近更新 更多