美文网首页
批量取交集:自编函数+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