2012-02-10 24 views
21

creé la siguiente función:pasar argumentos a una función en un único vector

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

Luego llama a la función con lo siguiente:

nDone(90,100,3,0.17,0.05,0) 

Resultado

[1] 0.6174643 

Ok hasta ahora estaban todos bien.

Ahora puedo crear un vector con los mismos valores en un objeto:

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

y trato de llamar a la función utilizando el objeto.

nDone(d) 

Y aparece el siguiente error.

Error in under/strike : 'strike' is missing 

¿Qué estoy haciendo mal y cómo solucionarlo?

Gracias

RSG

+0

me ajustó el título algo para reflejar mejor la cuestión de fondo. Siéntase libre de retroceder si no está de acuerdo. Escribiré una respuesta, a menos que alguien me gane. – joran

+2

'? Do.call' te llevará allí – baptiste

+0

Gracias, sí, es un título mejor. – user1181337

Respuesta

28

Prueba este

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

¡Y aquí estaba, escribiendo una larga explicación! ;) Lo que iba a agregar a este código era, en parte: R te está viendo pasar un único argumento a 'nDone', es decir, el vector' d', que se transfiere al primer argumento de función, 'under'. Como no ha especificado un valor predeterminado para los demás, faltan y, por lo tanto, el error. – joran

+0

Lo sentimos, supongo que mi estilo de respuesta se ha estropeado irremediablemente con R-help. – baptiste

Cuestiones relacionadas