美文网首页
批量取交集:自编函数+for循环

批量取交集:自编函数+for循环

作者: 一只小脑斧 | 来源:发表于2022-02-15 18:38 被阅读0次

rm(list = ls())
setwd("D:/※raw.data/XCL.2022.2.8")

读入文件

library(data.table)
data<-fread("all.txt",data.table = FALSE,header=T)

将4组提出

a<-c(1,4,7,10)
b<-c("HFDVAT.CDVAT","HFD_S.CD_S","HFDKPC.CDKPC","HFDKPC.CDKPC.S")

将循环变量放入数据框中

df <- data.frame(a,b)

自己编写函数unique.a,#unique基因名称

unique.a <- function(x){
x<-x[!duplicated(x[,1]), ]
}

自己编写函数p.a,取出p<0.05

p.a <- function(x){
x<-x[x[,3]<0.05,]
}

自己编写函数big.a,取出值大于1的

big.a <- function(x){
x<-x[x[,2]>1,]
}

自己编写函数gene.a,取出gene名

gene.a <- function(x){
x<-x[,1]
}

library(dplyr)

assign就把字符串变成了变量,付给它所要的值

for (i in 1:4) {
assign(df[i,2],#第2列为名称
data[,c(df[i,1],df[i,1]+1,df[i,1]+2)] #每三列一组取出,赋变量名
%>% unique.a() #unique基因名称
%>% na.omit() #去除na
%>% p.a() #筛p
%>% big.a()
%>% gene.a()
)
}

交集

ns<-intersect(HFD_S.CD_S,intersect(HFDVAT.CDVAT,HFDKPC.CDKPC))
ns

s<-intersect(HFD_S.CD_S,intersect(HFDVAT.CDVAT,HFDKPC.CDKPC.S))
s

并集

gene<-union(HFDKPC.CDKPC, HFDKPC.CDKPC.S)
write.table(gene,"KPC.union.1.results.txt",
quote = FALSE,#去掉引号
row.names = F)

输出结果

write.table(s,"S.results.txt",
quote = FALSE,#去掉引号
row.names = F
)

相关文章

网友评论

      本文标题:批量取交集:自编函数+for循环

      本文链接:https://www.haomeiwen.com/subject/uuyllrtx.html