R语言match函数

作者: 7f0a92cda77c | 来源:发表于2021-05-30 01:11 被阅读0次

    match函数的基本用法

    创建两个向量
    MMMM <- c(1,2,3,5,7,20)
    NNNN <- c(3,8)
    
    返回值分为两种,一种匹配上的,返回的是被匹配的那个向量对应的位置;另一种是NA值,没有匹配上使用NA值填充
    #match (A,B) 其中把A里的元素逐个匹配B中所有元素,如能匹配上,就返回匹配上的元素在B向量的位置;所以返回值长度和A相等
    match(MMMM,NNNN)
    #[1] NA NA  1 NA NA NA 
    #把1和B向量进行匹配,没有-NA;
    #把2和B向量匹配,没有-NA;
    #把3和B向量进行匹配,是B向量的第一个元素,所以返回值是1,其余同样比较
    
    返回值的向量长度和A相同
    match(NNNN,MMMM)
    #[1]  3 NA 
    #返回的长度和NNNN相同
    

    这个认识重要

    如果我们得到了一个表达矩阵,只有ENSEMBLE, 但是做富集分析需要ENTREZID号,怎么进行匹配
    第一步-获得包里对应的两个不同ID的转换
    options(connectionObserver = NULL)
    library(org.Mm.eg.db)
    library(clusterProfiler)
    library(dplyr)
    library(ggplot2)
    library(stringr)
    library(enrichplot)
    id2ENTREZID <- bitr(rownames(VOOM_DESEQ_final_DEG),fromType = "ENSEMBL", toType = "ENTREZID",   OrgDb = org.Mm.eg.db)
    #获得这个对应的数据框,并且行名和原来数据框的行名是一样的
    
    id2ENTREZID
    第二步-制作一个向量和原来数据框行数相同的向量
    ENTREZID <- rep("NA",time = nrow(dat))
    #方便操作
    
    dat
    第三步-将ENTREZID匹配到原来的数据框
    ENTREZID[match(id2ENTREZID[,1],rownames(dat))] <- id2ENTREZID[,2]
    #首先是洗白原来的NA值,将id2ENTREZID这个的第一列-ENSEMBLE与原来的数据dat的行名也为ENSEMBLE进行匹配
    #返回值是能够匹配到dat行名的位置,把这个位置信息赋予给id2ENTREZID[,2]
    

    把能匹配到的位置都给显示出来

    最后一步-合并信息
    dat <- cbind(rownames(dat),ENTREZID,dat)
    
    合并后的数据

    相关文章

      网友评论

        本文标题:R语言match函数

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