我有一个包含 2 个元素组合的列表,如下所示。
cbnl <- list(
c("A", "B"), c("B", "A"), c("C", "D"), c("E", "D"), c("F", "G"), c("H", "I"),
c("J", "K"), c("I", "H"), c("K", "J"), c("G", "F"), c("D", "C"), c("E", "C"),
c("D", "E"), c("C", "E")
)
Run Code Online (Sandbox Code Playgroud)
我想总结一下上面的列表。预期结果如下表所示。向量中元素的顺序在这里并不重要。
[[1]]
[1] "A" "B"
[[2]]
[1] "C" "D" "E"
[[3]]
[1] "F" "G"
[[4]]
[1] "H" "I"
[[5]]
[1] "J" "K"
Run Code Online (Sandbox Code Playgroud)
(规则1){A,B}等价于{B,A}。为了对应这一点,我想我可以做到这一点。
cbnl <- unique(lapply(cbnl, function(i) { sort(i) }))
Run Code Online (Sandbox Code Playgroud)
(规则2){A,B},{B,C}(其中一个元素是公共的)然后取两个集合的并集。结果是{A,B,C}。我没有明确的好主意来做到这一点。
有什么有效的方法可以做到这一点吗?