在 R 中创建维恩图以表示数据框中具有相同值的行

Create a Venn Diagram in R to represent rows with the same value from a dataframe

我想在 R 中创建一个维恩图,表示数据框的三列之间的交叉点,即表示每个成对比较以及三组之间有多少观察值是“1”。

这是一个可重现的例子。

library(ggVennDiagram)
df <- as.data.frame(cbind(A=c(1,0,0,0,0,1,1,1,0,1),
                    B=c(0,0,1,1,0,0,0,1,1,0),
                    C=c(0,0,1,1,1,1,0,1,0,0)))

生成的玩具数据框:

df
   A B C
1  1 0 0
2  0 0 0
3  0 1 1
4  0 1 1
5  0 0 1
6  1 0 1
7  1 0 0
8  1 1 1
9  0 1 0
10 1 0 0

所以,我想生成 ABC 交点的维恩图,即表示 A 和B,B和C,A和C,同时A B和C。

但是,如果我 运行 ggVennDiagram(df) 它确实会产生这个情节:

这显然不是我期望的输出。 谁知道我该如何解决?

您需要一个整数向量的命名列表,相当于数据框中每一列的 which(x == 1),因此您可以:

ggVennDiagram(lapply(df, function(x) which(x == 1)))