在 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
所以,我想生成 A
、B
和 C
交点的维恩图,即表示 A 和B,B和C,A和C,同时A B和C。
但是,如果我 运行 ggVennDiagram(df)
它确实会产生这个情节:
这显然不是我期望的输出。
谁知道我该如何解决?
您需要一个整数向量的命名列表,相当于数据框中每一列的 which(x == 1)
,因此您可以:
ggVennDiagram(lapply(df, function(x) which(x == 1)))
我想在 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
所以,我想生成 A
、B
和 C
交点的维恩图,即表示 A 和B,B和C,A和C,同时A B和C。
但是,如果我 运行 ggVennDiagram(df)
它确实会产生这个情节:
这显然不是我期望的输出。 谁知道我该如何解决?
您需要一个整数向量的命名列表,相当于数据框中每一列的 which(x == 1)
,因此您可以:
ggVennDiagram(lapply(df, function(x) which(x == 1)))