如何检测两个列表中的常见元素?

时间:2017-11-21 14:19:56

标签: r list

我有两个清单。我想为每一行的每个共同值归属1/4。 这是一个例子:

v=c(433,405,451)
v1=c(405,416,388 ,464,392,393,433)

w=c(405,385,384,431)
w1=c(405,478,451,430)

list1=list(v,v1)
list2=list(w,w1)

> list1
[[1]]
[1] 433 405 451

[[2]]
[1] 405 416 388 464 392 393 433

> list2
[[1]]
[1] 405 385 384 431

[[2]]
[1] 405 478 451 430

事实上,我们在两个列表的第一行和第二行看到共同的值为405,然后我们创建一个向量,如果存在公共值则包括1/4,否则为0: 在这种情况下,输出值应如下所示:

 1/4
 1/4  

这是因为list1 [1]和list2 [1]具有405作为公共值。 并且list1 [2]和list2 [1]具有405作为公共值。

我该怎么做?谢谢!

2 个答案:

答案 0 :(得分:1)

我会使用ifelse来完成这项任务

ifelse(v %in% v1,1/4,0)
[1] 0.25 0.25 0.00

答案 1 :(得分:0)

sapply(1:length(list1),function(x){if(sum(list1[[x]] %in% list2[[x]])>0){1/4}else{0} })

给出

[1] 0.25 0.25

只要您的两个列表具有相同的长度

,就应该工作