R语言 如何按集对UpSet图的组合矩阵进行排序

9vw9lbht  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(148)

我正在使用UpSetR包中的fromList()从命名向量列表中绘制一些数据。但是我需要按集合对组合矩阵进行排序,就像ggupset GitHub页面上的一个例子一样,从左到右,你首先有“Action”,然后是“Action”+“Animation”等集合

**换句话说:**我试图让我的情节看起来像这样:Desired outcomehttps://github.com/const-ae/ggupset

但我的情节看起来是这样的:Not desired outcome
我尝试使用ggupset包,但我不知道如何使用数据的命名向量列表。这也是有帮助的:如何使用命名向量列表作为ggupset的数据输入?

j8ag8udp

j8ag8udp1#

我解决了我的问题,编写了一个函数,将一个命名向量列表转换为一个 Dataframe ,每个元素都与它的集合配对。基本上就是ggupset需要的输入。
我会在这里发布,以防有人发现它有用:

library(VennDiagram)
library(stringr)

fromListtoggUpSet <- function(namedvectors){
  clusters <- get.venn.partitions(namedvectors)
  output <- data.frame()
  genes <- c()
  for (set in 1:nrow(clusters[clusters$..count..>0,])){
    genes <- c(genes, clusters[clusters$..count..>0,]$..values..[[set]])
  }
  output <- rbind(output, list("Genes" = genes))
  output <- cbind(output, "Set" = NA)
  
  fila <- 0
  for (set in 1:nrow(clusters[clusters$..count..>0,])){
    name <- str_split_1(gsub(".*\\((.*)\\).*", "\\1", 
           str_split_1(clusters[clusters$..count..>0,]$..set..[[set]], "∖")[1]), "∩")
    for (n in 1:clusters[clusters$..count..>0,]$..count..[[set]]){
      output[n+fila, 2] <- list(list(name))
    }
    fila <- fila + clusters[clusters$..count..>0,]$..count..[[set]]
  }
  return(output)
}

相关问题