0

这是关于 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

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

4

1 回答 1

3

你必须传递ioptim调用:

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")
于 2012-04-06T15:33:33.093 回答