当我在函数定义中使用可选参数时,省略号有问题。为了澄清,我定义了以下函数:
func1 <- function (x) (x-2)^2
func3 <- function (fun, arg.curve.user){
arg.curve.user$expr <- substitute(func1)
arg.curve.default <- list(col = "blue", n = 1000, main = "This is a test")
arg.curve <- modifyList (arg.curve.default, arg.curve.user)
do.call("curve", arg.curve)
}
# optimizes func1 and call func2 to plot func1
func2 <- function (lb, ub, n.restarts = 5, n.sim = 10, ...){
arg.curve.user <- as.list(substitute(list(...)))
output <- gosolnp(fun = func1, LB = lb, UB = ub, n.restarts = n.restarts,
n.sim = n.sim)$par
func3(fun = func1, arg.curve.user = arg.curve.user)
return(output)
}
通过调用 func2,对 func1 进行优化,并通过 func3 调用(需要Rsolnp包)进行绘制。
func2 ( lb = 0, ub = 8, n.restarts = 5, n.sim = 10, n = 200, from = 0, to = 8)
但是假设用户拼写错误n.restarts
并写道nrestarts
:
func2 ( lb = 0, ub = 8, nrestarts = 5, n.sim = 10, n = 200, from = 0, to = 8)
在这种情况下,我希望 R 实施以下计划来处理 的缺失n.restarts
:
- 将默认值(即 5)分配给 n.restarts 作为可选参数
- 最后声明一个警告:“nrestarts”不是图形参数
但这不会发生,而是 R 将 n (200) 的值分配给 n.restarts!
谁能帮我解决这个问题?
非常感谢