根据每个数据框中的观察值过滤数据框列表

时间:2019-05-02 13:51:29

标签: r purrr

说您有数据帧列表:

library(tidyverse)
library(janitor)

dat <- map(mtcars, tabyl)

然后您如何筛选出具有6个以上观察值的数据框?

我的第一个念头是discard(),但我没有这么幸运。任何见识将不胜感激!

4 个答案:

答案 0 :(得分:3)

使用purrr::discard

purrr::discard(dat, ~nrow(.) < 6)

或带有keep

purrr::keep(dat, ~nrow(.) >= 6)

答案 1 :(得分:2)

我们可以使用sapply创建一个逻辑向量,并使用它来过滤list中的base R(不使用任何软件包)

dat[sapply(dat, nrow) >= 6]

答案 2 :(得分:1)

您可以使用Filter,即

Filter(function(i)nrow(i) >= 6, dat)

答案 3 :(得分:1)

另一个purrr变体:

dat[purrr::map_lgl(dat,~nrow(.x)>=6)]