3

我认为以下代码为这个问题提供了动力:

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_dotssay 的函数运算符,它接受一个函数f,并返回f...添加到它的参数列表中

为任何帮助而欢呼

4

1 回答 1

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
于 2013-10-31T13:33:46.710 回答