exec()
[Making your own …]
What if your function doesn’t have tidy dots?
Can’t use !!
or :=
if doesn’t support rlang or dynamic dots
my_mean <- function(x, arg_name, arg_val) {
mean(x, !!arg_name := arg_val)
}
my_mean(c(NA, 1:10), arg_name = "na.rm", arg_val = TRUE)
#> Error in `my_mean()`:
#> ! `:=` can only be used within dynamic dots.
Let’s use the … from exec()
my_mean <- function(x, arg_name, arg_val) {
exec("mean", x, !!arg_name := arg_val)
}
my_mean(c(NA, 1:10), arg_name = "na.rm", arg_val = TRUE)
#> [1] 5.5
Note that you do not unquote arg_val
.
Also exec
is useful for mapping over a list of functions: