我用六个args创建了以下函数:
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
我做错了什么以及如何解决?
试试这个
do.call(nDone, as.list(d))
解释@joran首次尝试从评论中发生的事情:
R看到你将一个参数传递给nDone
,即矢量d
,它被移交给第一个函数参数under
。由于您没有为其他人指定默认值,因此它们会丢失,从而导致错误