Это работает?
x <- list(list(1:3,2:4),list(2:3,4:5),list(3:7,4:5))
maxlen <- max(sapply(x,length))
lapply(seq(maxlen),function(i) Reduce(intersect,lapply(x,"[[",i)))
(intersect
принимает только два аргумента, поэтому вы должны использовать Reduce
в качестве дополнительного шага)
PS Я не пробовал этов любых тяжелых случаях - например, списки неравной длины.