library(rlang)rlang tricks
Decompose Fun and List of Args
f <- function(fun = stats::mad, args = list()) {
call <- rlang::call2(fun, c(1:10, NA), !!!args)
eval(call)
}
f()[1] NA
f(args = list(na.rm = TRUE))[1] 3.7065
g <- function(x, fun = "median", pkg = "stats", args = list()) {
call <- rlang::call2(fun, x, !!!args, .ns = pkg)
eval(call)
}
g(c(rep(1, 5), rep(2, 3)))[1] 1
g(c(rep(1, 5), rep(2, 3), NA), "mean", "base", args = list(na.rm = T))[1] 1.375