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 と呼ばれる関数演算子を探しています。これは function を取り、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 に答える