簡體   English   中英

R中的子集矩陣觀測

[英]subsetting matrix observations in R

我有一個矩陣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自動發生。

關於如何執行此操作的任何建議都將有所幫助。

您可以嘗試:

  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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM