r-如何使用高阶函数(例如lapply或map)而不是for循环来过滤基于特定索引的数据帧列表



正如主题所建议的,我如何使用lapply/map/etc编写以下操作以在R中更高效?

for(i in 1:length(tbl)){
tbl[[i]] <- filter(tbl[[i]], tbl[[i]][, 7] >= 10)
}

其思想是基本上从列表的每个元素(数据帧(中过滤第7列,以便输出仅给出在所有数据帧的第7列中保持10或更大的值。我试过这样的东西,但没有让代码工作:

lapply(tbl, function(x) filter(x, tbl[[x]][, 7] >= 10))
lapply(tbl, function(x) x[x[,7] >= 10,])

或使用dplyr::filter

lapply(tbl, function(x) filter(x, x[,7] >= 10))

使用purrr::map

map(tbl, ~filter(.x, .x[,7] >= 10))

相关内容

  • 没有找到相关文章