gpt4 book ai didi

r - 了解 `Reduce`函数

转载 作者:行者123 更新时间:2023-12-01 23:51:28 26 4
gpt4 key购买 nike

我有一个关于R中Reduce函数的问题。我阅读了它的文档,但我仍然有点困惑。所以,我有 5 个带有基因名称的向量。例如:

v1 <- c("geneA","geneB",""...)
v2 <- c("geneA","geneC",""...)
v3 <- c("geneD","geneE",""...)
v4 <- c("geneA","geneE",""...)
v5 <- c("geneB","geneC",""...)

我想找出至少两个载体中存在哪些基因。有人建议:

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

如果有人能向我解释一下这个语句是如何工作的,我将不胜感激,因为我已经看到在其他场景中使用了Reduce。

最佳答案

Reduce 采用二进制函数和数据项列表,并以递归方式连续将该函数应用于列表元素。例如:

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

相同
intersect((intersect(a,b),c)

但是,我认为该构造不会对您有所帮助,因为它只会返回所有向量共有的那些元素。

要计算基因出现的向量数量,您可以执行以下操作:

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

关于r - 了解 `Reduce`函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28545688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com