複数の引数を単一のベクトルとして関数に渡すにはどうすればよいですか? 質問する

複数の引数を単一のベクトルとして関数に渡すにはどうすればよいですか? 質問する

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))

最初の試みで何が起こっているかの説明@ジョランコメントより:

nDoneRは、ベクトル という単一の引数を に渡していることを認識しておりd、これが最初の関数引数 に渡されます。under他の引数にはデフォルト値を指定していないため、それらは欠落しており、そのためエラーが発生します。

おすすめ記事