我想为两个采用可选参数的函数编写一个包装函数。
这是一个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+y
ifx
和y
are 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
.