# 安装并加载所需包
install.packages("ggvenn") 
library(ggvenn)
 
# 设置工作目录
setwd("F:\\血栓\\7.机器学习交集基因")
 
# 获取所有txt文件
files <- list.files(pattern  = "*.txt$")
 
# 忽略已存在的交集结果文件
files <- files[files != "interGenes.txt"] 
 
# 读取基因列表 
geneList <- list()
for (inputFile in files) {
  rt <- read.table(inputFile,  header = FALSE, sep = "\t", check.names  = FALSE)
  geneNames <- unlist(strsplit(as.vector(rt[,  1]), " "))
  geneNames <- gsub("^ | $", "", geneNames)
  uniqGene <- unique(geneNames)
  header <- unlist(strsplit(inputFile, "\\."))
  geneList[[header[1]]] <- uniqGene 
}
 
# 绘制Venn图
pdf(file = "venn.pdf",  width = 6, height = 6)
ggvenn(geneList, 
       show_percentage = TRUE,
       stroke_color = "white", 
       stroke_size = 0.5,
       fill_color = c("#E41A1C", "#1E90FF"),
       set_name_color = c("#E41A1C", "#1E90FF"),
       set_name_size = 6, 
       text_size = 4.5)
dev.off() 
 
# 计算并输出交集基因
interGenes <- Reduce(intersect, geneList)
write.table(interGenes,  file = "interGenes.txt",  sep = "\t", quote = FALSE, col.names  = FALSE, row.names  = FALSE)