我有两个清单。我想为每一行的每个共同值归属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作为公共值。
我该怎么做?谢谢!
答案 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
只要您的两个列表具有相同的长度
,就应该工作