2012-02-17 11 views
0

関数の結果を抽出します。私は次の関数を最小化する必要が

calloptim <- function(under,strike, rf, ttoe,par) {(-(under*par[1] 
    -strike*exp(-rf*ttoe)*par[2]))^2} 

私は、次のオブジェクトを作成:

res<- nlminb(c(1,1), calloptim, under= 90, strike = 100, rf =0.05, ttoe=3) 

res 

$par 
[1] 0.9771973 1.0218072 

$objective 
[1] 3.412923e-16 

$convergence 
[1] 1 

$iterations 
[1] 2 

$evaluations 
function gradient 
     34  4 

$message 
[1] "false convergence (8)" 

これは結構ですが、今私がつかむしたいが$ par推定値をベクトルに入れて、他の計算に使用することができます。

オブジェクトの結果の一部のみを分離して保存するにはどうすればよいですか?

答えて

6

次は、すべてほぼ同じです:

res$par 
res["par"] 
res[1] 
res[[1]] 

は詳細については?Extractのヘルプページを見てください。私はしばしば、オブジェクトを取得する場所、つまり、抽出するオブジェクトの名前か、見ているオブジェクト内の数値の場所(この場合は1)のいずれかを見つけるときに役立つオブジェクトのstr()を調べています。

+1

私はOPがこれらのオプションの最初と4番目を好むだろうと思うでしょう。res [["par"]] 'は別のオプションです(#1と#4に相当) –

+0

私はおそらく、 'res [1]'と 'res [[1]]の間に重要な違いがあり、これはしばしば混乱の原因になることがあります。 – joran

+0

ありがとうございました!素晴らしい仕事をした。 – user1181337

1

これはまさにあなたが求めているものを回答しますが、あれば知ってはいけないnewVals <- res$par

2

resのうち、$parメンバーを引っ張っ:

vector <- res$par 
> vector 
[1] 0.9771973 1.0218072 
> vector[1] 
[1] 0.9771973 

より「適切であるアクセサメソッドがあるかもしれません。

+0

(それは非常に検討する良い質問ですが)は良いアクセサメソッドがありません。 'nlminb()'の結果のクラスは 'list'です。 –

+0

ああ、ありがとう!私の部分では些細な間違い、出力の種類を確認しないでください。 – blake

1

これはあなたのprevious questionの拡張である場合は、あなたがそれらのネストされた答えを抽出することができます。

out <- apply(f, 1, nlminb, objective=calloptim, under=90, strike=100, rf=0.05, ttoe=3) 
out.par <- lapply(out, '[',1) 
unlist(out.par, recursive=FALSE) 
+0

Justinに感謝します。これは次の質問だったので、私の心を読んでください。この質問を投稿する前に私は$ parを入力していましたが、それはNULLに戻りました。 – user1181337

+1

ようこそ。これとあなたの他の質問については、あなたの問題を解決するのに役立つ票決の答えを習得し、それを受け入れることができます。 – Justin

+0

私の担当者が15になると、理解され、投票されます。 – user1181337

関連する問題