R:Filter(函数句柄,数据)在R中是什么意思


变量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))]

如果你愿意放弃重复,它可以被进一步简化。

最新更新