6 つの引数を持つ次の関数を作成しました。
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
何が間違っているのでしょうか、どうすれば修正できるのでしょうか?
ベストアンサー1
これを試して
do.call(nDone, as.list(d))
最初の試みで何が起こっているかの説明@ジョランコメントより:
nDone
Rは、ベクトル という単一の引数を に渡していることを認識しておりd
、これが最初の関数引数 に渡されます。under
他の引数にはデフォルト値を指定していないため、それらは欠落しており、そのためエラーが発生します。