如何通过调用R中另一个函数的优化函数传递常量参数?
我试图最小化一个在概念上与此类似的函数:如何通过调用R中另一个函数的优化函数传递常量参数?,r,function,optimization,parameter-passing,R,Function,Optimization,Parameter Passing,我试图最小化一个在概念上与此类似的函数: minim<-function(a,b,state){ if(state=="TRUE"){out<-2*a^2+b}else{out<-2*a^3-b} return(out) } 我得到的错误是: Error in fn(par, ...) : unused argument (state = "TRUE") GenSA应该能够接受它将传递给被调用函数的附加参数。由于某种原因,state=“TRUE”似乎没有被传递到minim。
minim<-function(a,b,state){
if(state=="TRUE"){out<-2*a^2+b}else{out<-2*a^3-b}
return(out) }
我得到的错误是:
Error in fn(par, ...) : unused argument (state = "TRUE")
GenSA
应该能够接受它将传递给被调用函数的附加参数。由于某种原因,state=“TRUE”
似乎没有被传递到minim
。我是不是编错了?我没有找到一个使用附加参数检查我的R语法的GenSA
use示例 您正在优化函数函数(params)minim(params[1],params[2])
。此函数不包含参数状态
。您可以这样修复此问题:
minim <- function(a, b, state) {
if (state) {
out <- 2 * a^2 + b
} else {
out<-2 * a^3 - b
}
return(out)
}
fn = function(params, state) minim(params[1],params[2], state)
minim_state_TRUE_fit<-GenSA(par=params,fn = fn,
lower=lower_limits, upper=upper_limits,
control=list(max.time=100), state = TRUE)
minim如果要将命名参数传递给函数,则需要提供正式参数来接受它们,因此在fn
参数定义和minim
调用中输入“点”:
minim_state_TRUE_fit<-GenSA(par=params,fn=function(params, ...) {
minim(params[1],params[2], ...) },
lower=lower_limits, upper=upper_limits,
control=list(max.time=100), state="TRUE")
minim\u state\u TRUE\u fitDo注意,如果调用构造正确,那么将state设置为“TRUE”将意味着它应该通过stat==“TRUE”的测试,这一点很好。我已经在示例代码中修复了这个错误。
minim_state_TRUE_fit<-GenSA(par=params,fn=function(params, ...) {
minim(params[1],params[2], ...) },
lower=lower_limits, upper=upper_limits,
control=list(max.time=100), state="TRUE")