2012-04-06 10 views
0

Rのoptim()関数については簡単な問題です。ループの変数に応じて関数の最小値を求めようとしています。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は私の答え:私は本当にあなたがoptimコールにiを渡す必要があり、この1 ....

+0

その多くのことを注意してくださいフランス人はフランス語を話せません。今後の質問では、エラーメッセージをフランス語から英語に翻訳することをお勧めします。あるいは、Rを英語のロケールに切り替えることができます... –

+1

Googleはかなりいい仕事をしています[http://translate.google.com/#auto|en|Erreur%20dans%20i%20* %20x%20%3A%20%27i%27%20est%20manquant)。 –

答えて

3

に対処する方法を理解していない

Erreur dans i * x : 'i' est manquant 

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

+0

@Justin:それはおそらくもっと良い解決策です...私はそれを編集します。ありがとう! –

関連する問題