2016-04-16 2 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) 

Scrubbing мой оригинальный ответ, и здание на @ 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 О.П. упоминает в комментариях (я буду называть его 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', не Это? Во-вторых, следует ли считать список (1, 3) и 'list (3, 1)' одним и тем же? – Psidom

+2

Имея 'cmb', альтернативный вариант выглядит как' all (cmb% in% l2) ' –

 Смежные вопросы

  • Нет связанных вопросов^_^