2016-04-16 49 views
0

列表的另一個列表檢查列表的子集,我有一個列表:
l1 = list(1, 3, 5)
作爲R

我有另外一個列表:
l2 = list(list(1, 3), list(2, 6), list(3, 5), list(1, 5))

我要檢查如果每個2-項目子集的l1(即list(1, 3),list(1, 5)list(3, 5))存在於l2中。

在這種情況下,我只是想直接回答爲TRUE。 我該怎麼辦?

回答

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 
+0

我想'any'應該是'all',是不是它?其次,應該將「list(1,3)」和「list(3,1)」視爲相同嗎? – Psidom

+2

擁有'cmb',替代似乎是'all(cmb%in%l2)' –