Quero poder filtrar um dado data.frame por uma lista dinâmica.
Digamos que eu tenha uma lista de filtros como esta
filter_list = list(filter_1 = list(vs = c(0), carb = c(1,4)),
filter_2 = list(cyl = c(4,6)))
Existe uma maneira de filtrar um data.frame
like mtcars
de forma que fique equivalente também
library(dplyr)
mtcars %>%
filter(vs %in% c(0) & carb %in% c(1,4) |
cyl %in% c(4,6))
usando o formulário filter_list acima? Então, cada elemento do filter_list
é avaliado como or
e cada item do elemento da lista de filtros é avaliado como um and
.
Tentei usar um loop, mas não está funcionando como esperado:
df = mtcars
for(f in filter_list){
vars = names(f)
i = 1
for(n in f){
df = filter(df, !!vars[[i]] %in% n)
i = i +1
}
}
Isso retorna apenas um data.frame
. A or
condição também é violada com a loop
abordagem -.