2016-05-18 4 views
0

У меня есть два списка list_a и list_b. Структура списков выглядит следующим образомСравнение двух списков и отображение несоответствующих элементов

> list_b[1] 
[[1]] 
[1] ORANGE COLUMNS  BLACK  BLUE TRIGGER  
[6] GREEN  DRAUGHT 

> list_a[1] 
[[1]] 
[1] RED  SPARROW   HAWK  TRIGGER  BLUE  
[6] ORANGE  COLUMNS  TIGER  CAMEROON BULLSEYE 

> length(list_a) 
[1] 1012 
> length(list_b) 
[1] 1 

Как мы можем видеть, list_b имеет только один элемент списка, который имеет несколько строк. Я хочу сравнить каждый элемент list_b [1] со всеми элементами list_a i.e сравнить list_b [1] с list_a [1]; list_b [1] с list_a [2]; ... и так далее. Последовательность, в которой строки отображаются в list_b [1] и list_a [1: 1012], для меня не важна. Для каждого совпадения я хотел бы просмотреть количество элементов в list_b [1], которые не совпадали, а также элементы, которые не совпадали. Следовательно, сравнение между list_b [1] и list_a [1] должно указывать на то, что элементы в list_b, которые не совпадали, являются BLACK, GREEN и DRAFT, и поэтому количество несогласованных элементов равно 3. Я пробовал это с помощью intersect(), но не удалось. Пожалуйста помоги.

+1

Пожалуйста 'dput' объекты, или лучше, более простой пример, который может поместиться целиком на ваш вопрос. Ваша дискуссия и код для меня не имеют смысла. Вам действительно нужны объекты с именами, такими как 'list_a', а также' a'? – Frank

+0

извините за путаницу. Я сделал исправления. – ron

ответ

1
list_b = list(c('o', 'c', 'bk', 'bl', 't', 'g', 'd')) 
list_a = list(c('r', 's', 'h', 't', 'bl', 'o', 'c', 'ti', 'ca', 'bu'), 
       c('r', 's', 'h', 't', 'bl', 'o', 'c', 'ti', 'ca', 'bu')) 
lapply(list_a, function(a) { 
    b = list_b[[1]] 
    non.matching = setdiff(b, a) 
    return(c(length(non.matching), non.matching)) 
}) 

или

lapply(list_a, function(a) { 
     b = list_b[[1]] 
     non.matching = setdiff(b, a) 
    return(list(num = length(non.matching), elements = non.matching)) 
    }) 
+0

Этот код дает количество несоответствующих элементов. Я хочу элементы вместе со счетом. – ron

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