2012-04-06 42 views
0

這是關於R上的optim()函數的一個簡單問題。我試圖根據循環的變量找到函數的最小值。關於optim()函數取決於循環的R問題

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 

我真的不知道如何處理這一個....

+0

請注意,很多這樣的人不會說法語。所以對於將來的問題,我會建議將錯誤信息從法文翻譯成英文。或者,你可以將R切換到英文區域... – 2012-04-10 13:12:56

+1

谷歌做了一個很好的工作[翻譯像這樣的東西](http://translate.google.com/#auto|en|Erreur%20dans%20i%20* %20X%20%3A%20%27I%27%20est%20manquant)。 – 2012-04-10 13:51:41

回答

3

你要通過ioptim電話:

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

...和optim返回一個列表,所以你需要選擇哪一個元素nt在你想要存儲的列表中M。我想,你希望par

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

UPDATE:

賈斯汀在評論中指出,更多的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") 
+0

你贏了!我寫了同樣的東西,但增加了將M初始化爲列表的潛在步驟,並保存了所有優化輸出。 – Justin 2012-04-06 15:36:22

+0

@Justin:這可能是一個更好的解決方案...我會編輯它;謝謝! – 2012-04-06 15:41:55