I created the following function with six 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
Now I create a vector with the same values in an object, and try to call the function using the vector, but get the following error:
d <- c(90,100,3,0.17,0.05,0)
nDone(d)
Error in under/strike : 'strike' is missing
What am I doing wrong and how to fix?
Try this
Explanation of what’s happening in your first attempt by @joran from the comments:
R is seeing you pass a single argument to
nDone, namely the vectord, which is handed off to the first function argument,under. Since you haven’t specified a default value for the others, they are missing and hence the error