Вы просите найти общие элементы в каждом списке, а не просто дубликаты в целом.Дубликаты ниже Aaa, Ccc, Ddd, and Xxx
, но единственный элемент, дублированный на любой из них, Xxx
.intersect()
выполнит это с некоторыми двойными lapply
функциями.
A = list("Aaa", "Aaa", "Ccc", "Ccc")
B = list("Ddd", "Ddd", "Ddd", "Eee")
C = list("Fff", "Ggg", "Hhh", "Iii", "Jjj")
D = list("Kkk", "Lll", "Mmm", "Nnn", "Xxx")
E = list("Ppp", "Qqq", "Rrr", "Xxx")
Mylist <- list(A, B, C, D, E)
dupes <- unlist(lapply(Mylist, function(x) lapply(Mylist, function(y) intersect(x,y))))
unique(dupes[duplicated(dupes)])
[1] "Xxx"
Чтобы увидеть, где находятся пересечения, это скажет вам, что у вашего 4-го списка есть 1 общий элемент с вашим 5-м списком:
sapply(seq_len(length(Mylist)), function(x) sapply(seq_len(length(Mylist)), function(y) length(intersect(unlist(Mylist[x]), unlist(Mylist[y])))))
[,1] [,2] [,3] [,4] [,5]
[1,] 2 0 0 0 0
[2,] 0 2 0 0 0
[3,] 0 0 5 0 0
[4,] 0 0 0 5 1
[5,] 0 0 0 1 4