如何在R中找到包含重複元素的向量的唯一排列?


我們可以使用combinat包中的permn函式來查詢排列,但是如果向量中包含重複元素,則結果將不包含唯一排列,因此,我們需要將unique函式與permn函式一起使用。例如,如果我們有一個向量1, 2, 1,則排列將是(1 2 1), (1 1 2), (1 1 2), (1 2 1), (2 1 1), (2 1 1),而唯一排列將是(1 2 1), (1 1 2), (2 1 1)。

示例

 線上演示

x1<-c(1,2,1,2)
x1

輸出

[1] 1 2 1 2

查詢所有排列:

permn(x1)

[[1]]
[1] 1 2 1 2
[[2]]
[1] 1 2 2 1
[[3]]
[1] 1 2 2 1
[[4]]
[1] 2 1 2 1
[[5]]
[1] 2 1 1 2
[[6]]
[1] 1 2 1 2
[[7]]
[1] 1 1 2 2
[[8]]
[1] 1 1 2 2
[[9]]
[1] 1 1 2 2
[[10]]
[1] 1 1 2 2
[[11]]
[1] 1 2 1 2
[[12]]
[1] 2 1 1 2
[[13]]
[1] 2 1 2 1
[[14]]
[1] 1 2 2 1
[[15]]
[1] 1 2 2 1
[[16]]
[1] 1 2 1 2
[[17]]
[1] 2 1 1 2
[[18]]
[1] 2 1 2 1
[[19]]
[1] 2 2 1 1
[[20]]
[1] 2 2 1 1
[[21]]
[1] 2 2 1 1
[[22]]
[1] 2 2 1 1
[[23]]
[1] 2 1 2 1
[[24]]
[1] 2 1 1 2

查詢唯一排列:

unique(permn(x1))

[[1]]
[1] 1 2 1 2
[[2]]
[1] 1 2 2 1
[[3]]
[1] 2 1 2 1
[[4]]
[1] 2 1 1 2
[[5]]
[1] 1 1 2 2
[[6]]
[1] 2 2 1 1

示例

x2<-c(0,1,0) permn(x2)

[[1]]
[1] 0 1 0
[[2]]
[1] 0 0 1
[[3]]
[1] 0 0 1
[[4]]
[1] 0 1 0
[[5]]
[1] 1 0 0
[[6]]
[1] 1 0 0

unique(permn(x2))

[[1]]
[1] 0 1 0
[[2]]
[1] 0 0 1
[[3]]
[1] 1 0 0

更新於:2020年10月8日

301 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.