我想为两个采用可选参数的函数编写一个包装函数。
这是一个fun包装函数funA的例子funB
funA <- function(x = 1, y = 1) return(x+y)
funB <- function(z = c(1, 1) return(sum(z))
fun <- function(x, y, z)
我想fun返回x+yifx和yare provided,sum(z)如果提供了向量z。
我试图查看该lm函数如何接受这些可选参数,但不清楚究竟是如何使用的,例如,match.call这里是如何使用的。
在找到相关问题后(例如,如何在编写自己的函数时使用 R 的省略号功能?并使用替换来获取参数名称)),我想出了一个可行的解决方案。
我的解决方案只是使用
fun <- function(...){
  inputs <- list(...)
  if (all(c("x", "y") %in% inputs){
    ans <- funA(x, y)
   } else if ("z" %in% inputs){
    ans <- funB(z)
   }
有没有更好的办法?
注意:也许这个问题可以作为重复关闭,但希望它可以用于指导其他用户找到一个好的解决方案:将我的搜索扩展到各种包括ellipsis, substitute,除了  match.call.