当我在函数定义中使用可选参数时,我遇到省略号问题。为了澄清,我定义了以下函数:
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反而!!
谁能帮我解决这个问题?
非常感谢