Проблема не в том, что вы используете несколько условий.Вы можете видеть, что вы получаете ту же проблему только с одним условием.Проблема в том, что enquo
ожидает голое выражение, а не строку.Таким образом, это возвращает ожидаемый результат:
myfil(df, a > 3 & b > 2 & c < 8)
a b c
1 5 4 1
2 7 10 5
3 9 5 2
4 6 6 3
Если вы хотите работать со строкой, вы можете использовать rlang::parse_expr
, чтобы превратить строку в выражение для !!
для работы с:
myfil <- function(df, fil) {
quo_fil <- rlang::parse_expr(fil)
filter(df, !!quo_fil)
}
f <- "a > 3 & b > 2 & c < 8"
myfil(df, f)
a b c
1 5 4 1
2 7 10 5
3 9 5 2
4 6 6 3