Как передать логические аргументы функциям в R, программируя с помощью функций tidyverse? Этот связанный вопрос не позволяет пользователю изменять логический оператор, он предполагает, что пользователь функции всегда хочет ==
.
См. Пример, приведенный ниже, и попытки до сих пор.
# example data
library(tidyverse)
dat <- tibble(x = letters[1:4], y = 1:4, z = 5:8)
# what I want to do is have a function that passes arguments to filter()
# so that I can flexibly subset data:
dat %>%
filter(x == "a" | y < 2)
dat %>%
filter(x == "b" & y < 1)
dat %>%
filter(y == max(y))
# what would I pass to lgl to do this in a function?
# I want to be a ble to feed in different logical expressions, notalways using
# the same variables and operations, like the documentation for filter()
# demonstrates
# tries so far:
fun <- function(dat, lgl) filter(dat, lgl)
fun(dat, x == "a" | y < 2)
fun <- function(dat, lgl) filter(dat, quo(lgl))
fun(dat, x == "a" | y < 2)
fun <- function(dat, lgl) filter(dat, quos(lgl))
fun(dat, x == "a" | y < 2)
fun <- function(dat, lgl) filter(dat, !!sym(lgl))
fun(dat, 'x == "a" | y < 2')
fun <- function(dat, lgl) filter(dat, !!!syms(lgl))
fun(dat, 'x == "a" | y < 2')
fun <- function(dat, lgl) filter(dat, expr(lgl))
fun(dat, x == "a" | y < 2)
fun <- function(dat, lgl) filter(dat, eval(lgl, envir = parent.frame()))
fun(dat, x == "a" | y < 2)