变量getgenes有一个名为"GENE";。此列有多余的字符串。目的是获得出现g(g可以是2,3,4…等(次的字符串。
x <- Filter(function(elem) length(which(getgenes$GENE == elem)) == g, getgenes$GENE)
我在R中搜索了Filter函数,但找不到使用functon作为第一个参数的匹配项。
过滤器在这里是什么意思?
从帮助页面,"Filter提取谓词(逻辑(函数为true的向量的元素"如果你查看来源,你可以看到
x <- Filter(function(elem) length(which(getgenes$GENE == elem)) == g, getgenes$GENE)
相当于:
x <- getgenes$GENE[which(as.logical(unlist(lapply(getgenes$GENE,
function(elem) length(which(getgenes$GENE == elem)) == g))))]
然而,这似乎是一种迂回的方法来得出答案。在一些关于getgenes和g结构的温和假设下,我相信表达式可以简化为:
x <- getgenes$GENE[getgenes$GENE %in% names(which(table(getgenes$GENE) == g))]
如果你愿意放弃重复,它可以被进一步简化。