R 提取函数的结果

R 提取函数的结果,r,function,R,Function,我有以下要最小化的功能: calloptim <- function( under,strike, rf, ttoe,par) {(-(under*par[1] -strike*exp(-rf*ttoe)*par[2]))^2} calloptim使用newVals将$par成员从res中拉出newVals不知道这是否准确回答了您的问题,但是: vector <- res$par > vector [1] 0.9771973 1.0218072 > vector[1

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

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

calloptim使用
newVals将
$par
成员从
res
中拉出
newVals不知道这是否准确回答了您的问题,但是:

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

可能有一种访问器方法更“合适”。

以下方法大致相当:

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

有关详细信息,请查看
?摘录
的帮助页面。我经常发现查看对象的
str()

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)

out我猜OP更喜欢这些选项中的第一个和第四个
res[[“par”]]
是另一个选项(相当于#1和#4)。我可能会在这个答案中包括一个注意事项,即
res[1]
res[[1]]]
之间有一个重要的区别,这常常会引起混淆。没有更好的访问方法(尽管这是一个需要考虑的好问题)。
nlminb()
的结果类是
list
。啊,谢谢!我犯了天真的错误,没有验证输出类型。谢谢Justin。这将是下一个问题,所以你了解我的想法。在发布这个问题之前,我输入了$par,结果返回空值。不客气。在这个问题和你的其他问题上,习惯上会对有助于解决问题的答案投赞成票,并接受有助于解决问题的答案。(我们将赢得声誉,而你将赢得声誉和徽章。)啊,明白了就行了,当我的代表达到15岁时,我们将投票。在这种情况下,括号被用作函数。请参见
?'['
您可以将
'['
视为
子集
的简写形式。除了
应用
系列正在寻找函数的特殊情况外,您几乎总是成对使用括号,而您提供的正好是
'['
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)