如何使两个矩阵的差的R Venn图不同? [英] How to have R Venn Diagram of two matrices differences?
问题描述
我想要一个维恩图,说明设置alpha
时具有相同尺寸的两个矩阵p.mat.p
和p.mat.t
的差异.
伪代码
I want to have a venn diagram of the differences in two matrices p.mat.p
and p.mat.t
which have same dimensions when alpha
set.
Pseudocode
- 如果两个矩阵匹配,则将项目添加到相交处;可以匹配FALSE或TRUE;否则像通常使用维恩图一样将项目留在交叉点之外
- 在Venn图上放置矩阵单元格的ID
两种方法:具有vennDiagram
的矩阵和具有列表的venn
.
数据
Two approaches: matrix with vennDiagram
and venn
with lists.
Data
p.mat.p
1 2 3 4 5 6 7 8 9 10 11
1 TRUE TRUE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
2 TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
3 TRUE TRUE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
4 FALSE FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
5 FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
6 TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
7 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
8 FALSE FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
9 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
10 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
11 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
p.mat.t
1 2 3 4 5 6 7 8 9 10 11
1 FALSE TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE
2 TRUE FALSE FALSE FALSE TRUE FALSE TRUE TRUE TRUE TRUE FALSE
3 TRUE FALSE FALSE FALSE TRUE FALSE TRUE TRUE TRUE TRUE FALSE
4 TRUE FALSE FALSE FALSE TRUE FALSE TRUE TRUE TRUE TRUE FALSE
5 FALSE TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE
6 TRUE FALSE FALSE FALSE TRUE FALSE TRUE TRUE TRUE TRUE FALSE
7 FALSE TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE
8 FALSE TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE
9 FALSE TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE
10 FALSE TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE
11 TRUE FALSE FALSE FALSE TRUE FALSE TRUE TRUE TRUE TRUE FALSE
带有矩阵的代码
library("psych")
library("gplots")
library("limma") # http://www.ats.ucla.edu/stat/r/faq/venn.htm
ids <- seq(1,11)
M.cor <- cor(mtcars)
colnames(M.cor) <- ids
rownames(M.cor) <- ids
p.mat <- psych::corr.test(M.cor, adjust = "none", ci = F)
alpha <- .00000005
p.mat.p <- (p.mat[["p"]] < alpha)
str(p.mat.p)
print(p.mat.p)
p.mat.t <- (p.mat[["t"]] < alpha)
str(p.mat.t)
print(p.mat.t)
# http://www.ats.ucla.edu/stat/r/faq/venn.htm
c3 <- cbind( c(p.mat.p), c(p.mat.t))
a <- vennCounts(c3)
vennDiagram(a)
在圆及其交点上没有ID的输出不足
Output without IDs on circles and its intersection so not sufficient
预期输出:维恩图,在相交,圆和其他位置具有ID.
Expected output: venn diagram with IDs on intersection, circles and elsewhere.
我认为在这里必须使用列表,因为venn
仅支持它们
I think working with lists is mandatory here because venn
supports only them
library("corrplot")
library("psych")
ids <- seq(1,11)
M.cor <- cor(mtcars)
colnames(M.cor) <- ids
rownames(M.cor) <- ids
p.mat <- psych::corr.test(M.cor, adjust = "none", ci = F)
alpha <- .00000005
# http://stackoverflow.com/q/2471188/54964
p.mat.p <- (p.mat[["p"]] < alpha)
p.mat.p <- as.list(p.mat.p)
p.mat.t <- (p.mat[["t"]] < alpha)
p.mat.t <- as.list(p.mat.t)
venn(list(first.vector = p.mat.p, second.vector = p.mat.t))
输出:十字路口上的121错
Output: 121 in the intersection so wrong
R:3.3.1
操作系统:Debian 8.5
R: 3.3.1
OS: Debian 8.5
推荐答案
MATRIX_1 == MATRIX_2为您提供矩阵之间的差异.
进行print(p.mat.p == p.mat.t)
,您将得出TRUE为相交项和其他项的地方;但是,这不适用于两个以上的矩阵
MATRIX_1 == MATRIX_2 gives you the differences between the matrices.
Do print(p.mat.p == p.mat.t)
and you get where TRUEs are items for the intersection and others; however, this will not work well with more than two matrices
1 2 3 4 5 6 7 8 9 10 11
1 FALSE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE FALSE
2 TRUE FALSE FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE
3 TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
4 FALSE TRUE TRUE FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE
5 TRUE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE FALSE
6 TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
7 TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE TRUE TRUE FALSE
8 TRUE FALSE FALSE TRUE TRUE FALSE TRUE FALSE TRUE TRUE FALSE
9 TRUE FALSE FALSE FALSE TRUE FALSE TRUE TRUE FALSE TRUE FALSE
10 TRUE FALSE FALSE FALSE TRUE FALSE TRUE TRUE TRUE FALSE FALSE
11 FALSE TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
这篇关于如何使两个矩阵的差的R Venn图不同?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!