检查列表元素之间是否重叠

时间:2015-10-22 05:51:22

标签: r set unique

我有一个整数列表,我想检查这些元素是否都是唯一的。

set.seed(2)
x <- list(a=sample(10,3),b=sample(10,5),c=sample(10,7))
x
# $a
# [1] 2 7 5
# $b
# [1] 2 9 8 1 6
# $c
# [1]  5 10  9  2  8  1  7

对于此示例,以下所有情况都未通过检查:1)2出现在所有条目中,2)5出现在$a$c,3)8出现在{{1} }和$b,4)1出现在$c$b等中。

$c

y <- list(a=c(1,3,5),b=c(7,4),c=c(6,10)) 的元素之间没有重叠,所以它通过了检查。

预期输出应该只是True / False,表示列表是否通过了检查。

1 个答案:

答案 0 :(得分:1)

您可以将列表转换为包含unlist的向量,然后检查带有anyduplicated的向量中是否有任何元素重复。

!any(duplicated(unlist(x)))
# [1] FALSE
!any(duplicated(unlist(y)))
# [1] TRUE