如何将多个参数作为单个向量传递给函数?

问题描述 投票:24回答:1

我用六个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

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

r function arguments parameter-passing
1个回答
32
投票

试试这个

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

解释@joran首次尝试从评论中发生的事情:

R看到你将一个参数传递给nDone,即矢量d,它被移交给第一个函数参数under。由于您没有为其他人指定默认值,因此它们会丢失,从而导致错误

© www.soinside.com 2019 - 2024. All rights reserved.