根据每个数据框的观测值数量筛选数据框列表

3

假设你有一组数据框:

library(tidyverse)
library(janitor)

dat <- map(mtcars, tabyl)

如何过滤出观测值大于6的数据框?

我的第一个想法是使用discard(),但我没有成功。如果您有任何见解,将不胜感激!


dat[lapply(dat, nrow) > 6] - pogibas
1
没有这样的运气,怎么办?你尝试了什么不起作用的方法? - camille
@camille 这不是重复吗? - akrun
@akrun,完全可以做到。如果您有一个,将其标记为这样会很有帮助。 - camille
4个回答

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

或者使用keep
purrr::keep(dat, ~nrow(.) >= 6)

2
我们可以使用`sapply`来创建一个逻辑向量,并使用它来过滤`base R`中的`list`(不使用任何包)。"最初的回答"
dat[sapply(dat, nrow) >= 6]

1
您可以使用Filter,即。
Filter(function(i)nrow(i) >= 6, dat)

1

Another purrr variant:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接