使用rlang包,我可以创建一个具有以下公式的函数:
new_function(pairlist2(a = , b = ), quote(a * b))
想象一下我在字符载体中有一个b:
arg_names <- c("a", "b")
如何使用arg_names
来创建函数参数?
需要指出的是,我事先并不知道参数的数量.另一个过程返回参数,这些参数可能会有所不同.
使用rlang包,我可以创建一个具有以下公式的函数:
new_function(pairlist2(a = , b = ), quote(a * b))
想象一下我在字符载体中有一个b:
arg_names <- c("a", "b")
如何使用arg_names
来创建函数参数?
需要指出的是,我事先并不知道参数的数量.另一个过程返回参数,这些参数可能会有所不同.
已经有一个很好的答案,但由于该问题确实使用了rlang标签,我们可以使用rlang missing_arg
函数. 我们将从正文中提取变量以获取参数,并假设它们按照遇到的顺序,但如果更好的话,我们可以提供args <- c("a", "b")
.
library(purrr)
library(rlang)
# input
f <- function() a * b
args <- all.vars(body(f)) # or use args <- c("a","b")
formals(f) <- map(set_names(args), ~ missing_arg())
f
## function (a, b)
## a * b
相应的基本R代码是:
formals(f) <- sapply(args, \(x) unname(alist(x=)))