我认为以下一点代码为这个问题提供了动力:
add <- function(x, y = 1) x + y
subtract <- function(x, z = 1) x - z
both <- function(x, ...) list(add(x, ...), subtract(x, ...))
both(1)
# OK
both(1, z = 2)
# Error in add(x, ...) : unused argument (z = 2)
# a solution from a previous question I asked
add <- function(x, y = 1, ...) x + y
subtract <- function(x, z = 1, ...) x - z
both(1, z = 2)
所以我正在寻找一个名为add_dots
的函数运算符,它接受函数f
,并返回f
但...
添加到其参数列表中
为任何帮助干杯
答案 0 :(得分:5)
这似乎有效:
add <- function(x, y = 1) x + y
#> add
#function(x, y = 1) x + y
formals(add) <- c(formals(add), alist(... = ))
#> add
#function (x, y = 1, ...)
#x + y
在@agstudy的评论之后,它的功能是:
add_dots <- function(FUN)
{
f <- match.fun(FUN)
formals(f) <- c(formals(f), alist(... = ))
return(f)
}
add <- function(x, y = 1) x + y
#> add
#function(x, y = 1) x + y
add_dots(add)
#function (x, y = 1, ...)
#x + y
new.add <- add_dots(add)
#> new.add
#function (x, y = 1, ...)
#x + y