Извлечь результаты функции - PullRequest
0 голосов
/ 18 февраля 2012

У меня есть следующая функция, которую нужно свернуть:

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 ]

6 голосов
/ 18 февраля 2012

Следующие данные примерно эквивалентны:

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

Для получения подробной информации см. Страницу справки для ?Extract.Я часто нахожу, что поиск str() объекта полезен при попытке найти, где взять вещи, то есть либо имя объекта, которое нужно извлечь, либо его числовое местоположение в объекте, на который вы смотрите (1 в данном случае).

2 голосов
/ 18 февраля 2012

Не знаю, точно ли это соответствует тому, что вы спрашиваете, но:

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

Возможно, существует метод доступа, который является более "правильным".

1 голос
/ 18 февраля 2012

Если это расширение вашего предыдущего вопроса , вы можете извлечь эти вложенные ответы с помощью:

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)
1 голос
/ 18 февраля 2012

Извлеките элемент $par из res с помощью newVals <- res$par

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...