将参数传递给单个向量中的函数

rsg*_*mon 24 arguments r function parameter-passing

我创建了以下功能:

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
Run Code Online (Sandbox Code Playgroud)

然后我用以下函数调用该函数:

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

nDone(d)

Error in under/strike : 'strike' is missing
Run Code Online (Sandbox Code Playgroud)

结果

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
Run Code Online (Sandbox Code Playgroud)

好到目前为止都很好.

现在我在对象中创建一个具有相同值的向量:

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

nDone(d)

Error in under/strike : 'strike' is missing
Run Code Online (Sandbox Code Playgroud)

我尝试使用该对象调用该函数.

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
Run Code Online (Sandbox Code Playgroud)

我收到以下错误.

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

nDone(d)

Error in under/strike : 'strike' is missing
Run Code Online (Sandbox Code Playgroud)

我做错了什么以及如何解决?

谢谢

RSG

bap*_*ste 32

试试这个

 do.call(nDone, as.list(d))
Run Code Online (Sandbox Code Playgroud)

  • 抱歉——我猜我的回答风格已经被 R-help 无可挽回地破坏了。 (2认同)