Как я могу передать несколько аргументов функции как один вектор? - PullRequest
24 голосов
/ 11 февраля 2012

Я создал следующую функцию с шестью аргументами:

nDone <- function(under,strike,ttoe,vol,rf,dy) {
    pnorm(((log(under/strike)+ (rf-dy+(vol^2)/2)*ttoe)/(vol*(ttoe^0.5))))
}

nDone(90,100,3,0.17,0.05,0)
# Result: 
[1] 0.6174643

Теперь я создаю вектор с такими же значениями в объекте и пытаюсь вызвать функцию, используя вектор, но получаю следующую ошибку:

d <- c(90,100,3,0.17,0.05,0)

nDone(d)

Error in under/strike : 'strike' is missing

Что я делаю не так и как исправить?

1 Ответ

32 голосов
/ 11 февраля 2012

Попробуйте это

 do.call(nDone, as.list(d))

Объяснение того, что происходит в вашей первой попытке, @ joran из комментариев:

R видит, что вы передаетеодиночный аргумент nDone, а именно вектор d, который передается первому аргументу функции under.Поскольку вы не указали значение по умолчанию для остальных, они отсутствуют и, следовательно, ошибка

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