如何从二元矩阵做R Vennerable维恩图?

时间:2016-11-14 17:49:41

标签: r matrix vector venn-diagram significance

检查基本示例表明,Vennerable输入必须是矢量列表here。 所以我做了以下我在那里采用二进制p值矩阵,并尝试根据它们的共同特征创建一个维恩图

library("Vennerable")
library('limma') # vennCounts, vennDiagram
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 <- 0.000000005

lista <- list(
  as.vector(p.mat[["p"]] < alpha), 
  as.vector(p.mat[["r"]] < alpha),
  as.vector(p.mat[["t"]] < alpha)
  )
# List of 3 vectors    

Vstem <- Venn(lista)

plot(Vstem, doWeights = TRUE, type = "circles")

图。 1输出错误

enter image description here

预期输出:三个圆形的Vennerable维恩图

STOUT

List of 3
 $ : logi [1:121] TRUE TRUE TRUE FALSE FALSE FALSE ...
 $ : logi [1:121] FALSE TRUE TRUE TRUE FALSE TRUE ...
 $ : logi [1:121] FALSE TRUE TRUE TRUE FALSE TRUE ...
Formal class 'Venn' [package "Vennerable"] with 2 slots
  ..@ IndicatorWeight : int [1:8, 1:4] 0 1 0 1 0 1 0 1 0 0 ...
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : chr [1:8] "000" "100" "010" "110" ...
  .. .. ..$ : chr [1:4] "1" "2" "3" ".Weight"
  ..@ IntersectionSets:List of 8
  .. ..$ 000: NULL
  .. ..$ 100: NULL
  .. ..$ 010: NULL
  .. ..$ 110: NULL
  .. ..$ 001: NULL
  .. ..$ 101: NULL
  .. ..$ 011: NULL
  .. ..$ 111: logi [1:2] TRUE FALSE

R:3.3.1
操作系统:Debian 8.5

1 个答案:

答案 0 :(得分:1)

user20650在评论中的回答

lista <- list(
  which(p.mat[["p"]] < alpha), #as.vector(p.mat[["p"]] < alpha), 
  which(p.mat[["r"]] < alpha), #as.vector(p.mat[["r"]] < alpha),
  which(p.mat[["t"]] < alpha) #as.vector(p.mat[["t"]] < alpha)
  )

输出

enter image description here

票证:#39#40