提取函数的结果

时间:2012-02-17 22:01:54

标签: r function

我有以下要最小化的功能:

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估计值并将它们放在一个向量中,这样我就可以将它们用于其他计算。

如何隔离和保存对象的部分结果?

4 个答案:

答案 0 :(得分:6)

以下几乎大致相同:

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

有关详细信息,请查看?Extract的帮助页面。我经常发现,当试图找到从哪里抓取东西时,查看对象的str()是有帮助的,即要提取的对象的名称或者在您正在查看的对象内的数字位置(1 in这种情况)。

答案 1 :(得分:2)

不知道这是否恰好回答了你的要求,但是:

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

可能存在更加“正确”的存取方法。

答案 2 :(得分:1)

$par成员从res

中拉出newVals <- res$par

答案 3 :(得分: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)