Скажем, у вас есть список данных:

library(tidyverse)
library(janitor)

dat <- map(mtcars, tabyl)

Как вы могли бы затем отфильтровать эти кадры данных с более чем 6 наблюдений?

Моей первой мыслью было discard(), но мне не повезло. Любое понимание будет оценено!

3
tomasu 2 Май 2019 в 16:51

4 ответа

Лучший ответ

С purrr::discard

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

Или с keep

purrr::keep(dat, ~nrow(.) >= 6)
3
Ronak Shah 2 Май 2019 в 13:57

Мы можем использовать sapply для создания логического вектора и использовать его для фильтрации list в base R (пакеты не используются)

dat[sapply(dat, nrow) >= 6]
2
akrun 2 Май 2019 в 13:59

Еще один purrr вариант:

dat[purrr::map_lgl(dat,~nrow(.x)>=6)]
1
NelsonGon 2 Май 2019 в 14:04

Вы можете использовать Filter, т.е.

Filter(function(i)nrow(i) >= 6, dat)
1
Sotos 2 Май 2019 в 13:53