我有一个fun_1利用substitute()其...参数的函数,以及另一个具有实现模式fun_2的签名的函数。我想在里面看到传递给. 这是我正在尝试做的一个说明。fun_2(...)do.call(fun_1, dots)fun_1()fun_2()...fun_2()
fun_1 <- function(...) {
substitute(list(...))[-1] %>%
sapply(deparse)
}
foo <- "X"
bar <- "Y"
fun_1(foo, bar)
# [1] "foo" "bar"
fun_2 <- function(...) {
# dots <- Filter(length, ???)
# rlang::invoke(my_fun, dots)
}
fun_2(foo, bar, NULL)
# desired output:
# [1] "foo" "bar"
我认为有足够的魔力rlang来完成这项工作,但我无法弄清楚如何做。我可以修改fun_1,只要
fun_1()可以访问foo和bar- 该
do.call模式在fun_2()
编辑:我也需要fun_2(list(foo, bar, NULL))工作