2012-02-10 55 views
21

我創建了以下功能:傳遞函數參數在單個載體

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) 

結果

[1] 0.6174643 

確定到目前爲止都很好。

現在我在一個對象創建具有相同價值觀的載體:

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

,我嘗試使用對象調用的函數。

nDone(d) 

我得到以下錯誤。

Error in under/strike : 'strike' is missing 

我在做什麼錯,如何解決?

感謝

RSG

+0

我調整標題有點以更好地反映潛在的問題。如果您不同意,請隨時回滾。我會寫一個答案,除非有人打我。 – joran 2012-02-10 22:41:36

+2

'?do.call'會讓你在那裏 – baptiste 2012-02-10 22:43:55

+0

謝謝,是的它是一個更好的標題。 – user1181337 2012-02-10 22:55:38

回答

28

試試這個

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

在這裏,我打了一個很長的解釋! ;)我將要添加到這段代碼中的部分內容是:R看到你將一個參數傳遞給'nDone',即向量'd',它被交給第一個函數參數'under'。由於您沒有爲其他人指定默認值,因此他們缺失並因此出現錯誤。 – joran 2012-02-10 22:47:25

+0

對不起 - 我的回答風格已經被R-help無法彌補地破壞了。 – baptiste 2012-02-10 22:52:52