如何使两个矩阵的差的R Venn图不同? [英] How to have R Venn Diagram of two matrices differences?

查看:144
本文介绍了如何使两个矩阵的差的R Venn图不同?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想要一个维恩图,说明设置alpha时具有相同尺寸的两个矩阵p.mat.pp.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

  1. 如果两个矩阵匹配,则将项目添加到相交处;可以匹配FALSE或TRUE;否则像通常使用维恩图一样将项目留在交叉点之外
  2. 在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆