大家,早安,

我有四个“字符”类列表:

list1 <- c("hola1", "hola2", "hola3")
list2 <- c("hola1", "hola2", "hola4")
list3 <- c("hola2", "hola7", "hola8")
list4 <- c("hola1", "hola7", "hola8")

我想获取这些列表之间有多少个共同点,例如维恩图,因此输出:



换句话说,就是这样:

这样的事情。您知道任何软件包或获取此软件包的方法吗?

提前致谢。

最佳答案

您可以将intersectcombn结合使用。 intersect查找公共(public)元素,并且combn将其应用于列表的所有1vs1组合:

l <- list(c("hola1", "hola2", "hola3"),
          c("hola1", "hola2", "hola4"),
          c("hola2", "hola7", "hola8"),
          c("hola1", "hola7", "hola8"))

combn(length(l), 2, FUN=function(i)intersect(l[[i[1]]], l[[i[2]]]),
      simplify=FALSE)
# [[1]]
# [1] "hola1" "hola2"
#[[2]]
#[1] "hola2"
#[[3]]
#[1] "hola1"
#[[4]]
#[1] "hola2"
#[[5]]
#[1] "hola1"
#[[6]]
#[1] "hola7" "hola8"

关于r - 提取多个列表中的常用名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22807575/

10-11 15:44