V1:假设函数f(x, ...)
和g(x , ...)
可以传递不同的参数。如果我要同时使用它们来定义一个新函数,我可以通过...
定义明确的运算符传递参数吗?举个简单的例子:
f1 = function(x, n = 1) x + n
g1 = function(x, m = 1) x + m
f = function(x, ...) f1(x, ...)
g = function(x, ...) g1(x, ...)
h = function(x, ...) {
fgList = list()
fgList[["f"]] = f(x, ...)
fgList[["g"]] = g(x, ...)
return(fgList)
}
h(1:4)
# $f
# [1] 2 3 4 5
# $g
# [1] 2 3 4 5
h(1:4, n = 2)
# Error in g1(x, ...) : unused argument (n = 2)
参数n
被传递给函数f
and g
,但它只为函数定义良好f
。我想减轻这种情况。
V2:如果它们是我定义的函数,那么下面 Hong Ooi 的解决方案就完美了。
可以将此解决方案扩展到没有...
参数的预定义函数,或者等效地,可以将...
参数“添加”到没有参数的预定义函数吗?例如:
h = function(x, ...) mean(x, ...) * median (x, ...)
h(1:4, test = 1)
## Error in median(x, ...) : unused argument (test = 1)