2012-02-10 54 views
21

tôi tạo ra các chức năng sau:truyền đối số cho một hàm trong một vector đơn

nDone<- function (under,strike,ttoe,vol,rf,dy) pnorm(((log(under/strike)+ 
    (rf-dy+(vol^2)/2)*ttoe)/(vol*(ttoe^0.5)))) 

Sau đó, tôi gọi hàm như sau:

nDone(90,100,3,0.17,0.05,0) 

quả

[1] 0.6174643 

Ok cho đến nay đều tốt.

Bây giờ tôi có thể tạo một vector với các giá trị như nhau trong một đối tượng:

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

và tôi cố gắng gọi hàm bằng cách sử dụng đối tượng.

nDone(d) 

Và tôi nhận được lỗi sau.

Error in under/strike : 'strike' is missing 

Tôi đang làm gì sai và cách khắc phục?

Cảm ơn

RSG

+0

tôi điều chỉnh tiêu đề hơi để phản ánh tốt hơn các vấn đề tiềm ẩn. Vui lòng quay lại nếu bạn không đồng ý. Tôi sẽ viết một câu trả lời, trừ khi ai đó đánh tôi với nó. – joran

+2

'? Do.call' sẽ đưa bạn đến đó – baptiste

+0

Cảm ơn, có một tiêu đề tốt hơn. – user1181337

Trả lời

28

Hãy thử điều này

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

Và ở đây tôi đã đánh máy một lời giải thích dài! ;) Những gì tôi sẽ thêm vào mã này, một phần: R đang thấy bạn truyền một đối số duy nhất cho 'nDone', cụ thể là vectơ' d', được đưa ra đối số hàm đầu tiên, 'under'. Vì bạn chưa chỉ định giá trị mặc định cho các giá trị khác, chúng thiếu và do đó sẽ xảy ra lỗi. – joran

+0

Xin lỗi - đoán kiểu trả lời của tôi đã được khắc phục sự cố với R-help. – baptiste

Các vấn đề liên quan