outer_func uses tidy evaluation for col_rfs and dflt_flag, i.e. it is possible to do col_rfs = dplyr::starts_with("col")
.
<code>outer_func <- function(dat, col_rfs, dflt_flag){
col_rfs_str <- tidyselect::eval_select(rlang::enquo(col_rfs), dat) %>% names
freqs <- purrr::map(col_rfs_str, (x) get_freq(dat, !!rlang::sym(x), {{dflt_flag}}))
return(freq)
}
get_freq <- function(dat, rf, dflt_flag){
freq <- dat %>%
dplyr::summarise(count = dplyr::n(), dr = mean({{dflt_flag}}), .groups = "drop")
return(freq)
}
</code>
<code>outer_func <- function(dat, col_rfs, dflt_flag){
col_rfs_str <- tidyselect::eval_select(rlang::enquo(col_rfs), dat) %>% names
freqs <- purrr::map(col_rfs_str, (x) get_freq(dat, !!rlang::sym(x), {{dflt_flag}}))
return(freq)
}
get_freq <- function(dat, rf, dflt_flag){
freq <- dat %>%
dplyr::summarise(count = dplyr::n(), dr = mean({{dflt_flag}}), .groups = "drop")
return(freq)
}
</code>
outer_func <- function(dat, col_rfs, dflt_flag){
col_rfs_str <- tidyselect::eval_select(rlang::enquo(col_rfs), dat) %>% names
freqs <- purrr::map(col_rfs_str, (x) get_freq(dat, !!rlang::sym(x), {{dflt_flag}}))
return(freq)
}
get_freq <- function(dat, rf, dflt_flag){
freq <- dat %>%
dplyr::summarise(count = dplyr::n(), dr = mean({{dflt_flag}}), .groups = "drop")
return(freq)
}
What is a good pattern which avoids converting col_rfs
to a string via tidyselect::eval_select(rlang::enquo(col_rfs), dat) %>% names
and then back to an unquoted column via !!rlang::sym(x)
when using purrr::map
?
It is important to keep the inputs to outer_func
& get_freq
as unquoted strings.