我有一个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))
工作