R在optim()上发出一个函数,取决于一个循环

时间:2012-04-06 15:16:01

标签: r optimization

这是关于R上的optim()函数的一个简单问题。我试图根据循环变量找到函数的最小值。

f<-function(x,i){
  i*x
}

M<-matrix(0,10,1)

  for (i in 1:5) {
    M[i,1]<-optim(c(1),f,lower=-2,upper=2,method="L-BFGS-B")
  }
M

R回答我:

Erreur dans i * x : 'i' est manquant

我真的不明白如何处理这个....

1 个答案:

答案 0 :(得分:3)

您必须将i传递给optim来电:

optim(1,f,i=i,lower=-2,upper=2,method="L-BFGS-B")

...而optim会返回一个列表,因此您需要选择要在M中存储的列表中的哪个元素。我假设你想要par

M[i,1] <- optim(1,f,i=i,lower=-2,upper=2,method="L-BFGS-B")$par

更新:

正如贾斯汀在评论中指出的那样,更像R的方式是:

L <- list()
for (i in 1:5) {
    L[[i]] <- optim(1,f,i=i,lower=-2,upper=2,method="L-BFGS-B")
}
V <- sapply(L, `[[`, "par")