Understand the `Reduce` function

前端 未结 3 1597
孤独总比滥情好
孤独总比滥情好 2020-12-23 11:34

I have a question about the Reduce function in R. I read its documentation, but I am still confused a bit. So, I have 5 vectors with genes name. For example:



        
3条回答
  •  独厮守ぢ
    2020-12-23 12:06

    Reduce takes a binary function and a list of data items and successively applies the function to the list elements in a recursive fashion. For example:

    Reduce(intersect,list(a,b,c))
    

    is the same as

    intersect((intersect(a,b),c)
    

    However, I don't think that construct will help you here as it will only return those elements that are common to all vectors.

    To count the number of vectors that a gene appears in you could do the following:

    vlist <- list(v1,v2,v3,v4,v5)
    addmargins(table(gene=unlist(vlist), vec=rep(paste0("v",1:5),times=sapply(vlist,length))),2,list(Count=function(x) sum(x[x>0])))
           vec
    gene    v1 v2 v3 v4 v5 Count
      geneA  1  1  0  1  0     3
      geneB  1  0  0  0  1     2
      geneC  0  1  0  0  1     2
      geneD  0  0  1  0  0     1
      geneE  0  0  1  1  0     2
    

提交回复
热议问题