web-dev-qa-db-ja.com

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

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

何が間違っているのか、どのように修正するのですか?

25
rsgmon

これを試して

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

コメントから @ joran による最初の試みで何が起こっているかの説明:

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

33
baptiste