Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 比较两个列表并显示不匹配的元素_R - Fatal编程技术网

R 比较两个列表并显示不匹配的元素

R 比较两个列表并显示不匹配的元素,r,R,我有两个列表列表a和列表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

我有两个列表列表a和列表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
正如我们所看到的,列表_b只有一个列表项,它有几个字符串。我想将list_b[1]的每个元素与list_a的所有项目进行比较,即将list_b[1]与list_a[1]进行比较;列表_b[1]与列表_a[2];。。。等等字符串出现在列表_b[1]和列表_a[1:1012]中的顺序对我来说并不重要。对于每个匹配,我想查看列表_b[1]中不匹配的元素数以及不匹配的元素数。因此,列表_b[1]和列表_a[1]之间的比较应表明列表_b中不匹配的元素为黑色、绿色和Draw,因此不匹配元素的计数为3。我尝试使用intersect()执行此操作,但未成功。请帮忙

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))
})


dput
对象,或者更简单的例子,完全适合您的问题。你的讨论和代码对我来说毫无意义。您真的需要名为
list\u a
以及
a
的对象吗?很抱歉给您带来混淆。我已经做了更正。请
dput
对象,或者更好,一个更简单的例子,可以完全适合你的问题。你的讨论和代码对我来说毫无意义。您真的需要名为
list\u a
以及
a
的对象吗?很抱歉给您带来混淆。我已经做了更正。这个代码给出了不匹配元素的计数。我想要元素和计数。这段代码给出了不匹配元素的计数。我要元素和计数。
lapply(list_a, function(a) {
      b = list_b[[1]]
      non.matching = setdiff(b, a)
     return(list(num = length(non.matching), elements = non.matching))
   })