Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List - Fatal编程技术网

R 如何从两个列表中检测公共元素?

R 如何从两个列表中检测公共元素?,r,list,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/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作为公共值

我该怎么做?谢谢

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

[1] 0.25 0.25

只要您的两个列表长度相同,它就可以工作

我将使用ifelse来完成此任务

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

请张贴一个可复制的例子。我修改了代码!现在容易多了!当您应该发布
dput
的结果时,您仍然在发布
head
——不要让其他人手动输入并重新创建您的列表。@标记,完成了!也许
长度(intersect(list1[[1]],list2[[1]])
就是你要找的;如果有公共元素的话,这将有一个值
>0
。谢谢你的回答