检查R中另一个列表列表中列表的子集

时间:2016-04-16 17:15:37

标签: r list subset

我有一个清单:
l1 = list(1, 3, 5)

我有另一个清单:
l2 = list(list(1, 3), list(2, 6), list(3, 5), list(1, 5))

我想检查l1的每个2项子集(即list(1, 3)list(1, 5)list(3, 5))是否存在于l2中。

在这种情况下,我只想直接回答TRUE。 我该怎么办?

1 个答案:

答案 0 :(得分:3)

首先找到l1的所有可能组合,作为列表列表返回。

cmb <- combn(l1, 2, simplify = FALSE)

根据我的原始答案,并根据@ alexis_laz的评论,你想要%in%

l2 <- list(list(1, 3), list(2, 6), list(3, 5), list(1, 5))
cmb %in% l2
# [1] TRUE TRUE TRUE
all(cmb %in% l2)
# [1] TRUE

但是当我们在评论中提及新的l2 OP时(我会称之为l3),我们会得到

l3 <- list(list(1, 3), list(2, 6), list(3, 5), list(1, 6)) 
cmb %in% l3
# [1]  TRUE FALSE  TRUE
all(cmb %in% l3)
# [1] FALSE