首页 > 解决方案 > 如何使用 lapply 和 dplyr::filter 函数遍历列表?

问题描述

我有两个数据框 x 和 y,每个都包含 22 条染色体的信息,我想从每个染色体中提取 uniqID 的交集。我尝试了以下方法,但出现错误:

chromosome <- 1:22
list1 <- lapply(chromosome, function(x) x %>% filter(chr == chromosome) %>% select(uniqID))
list2 <- lapply(chromosome, function(y) y %>% filter(chr == chromosome) %>% select(uniqID))
list3 <- intersect(list1, list2)


Error in UseMethod("filter_") : 
no applicable method for 'filter_' applied to an object of class "c('integer', 'numeric')"

谁能指出可能是什么原因?也许我滥用了 lapply 功能。

标签: rloopsfilter

解决方案


尝试以下操作:

list3 <- lapply(chromosome, function(p) 
                intersect(x$uniqID[x$chr == p], y$uniqID[y$chr == p]))

在这里,我们找到了在和的每个值中uniqID都存在的共同点。xychromosome


推荐阅读