2017-05-02 13 views
10

में फ़ंक्शन के लिए कितने तर्क हैं, मैं एक फ़ंक्शन की अपेक्षाओं की संख्या को कैसे निर्धारित कर सकता हूं?फ़ंक्शन

f(fa) = 1 
f(fb) = 2 
f(fc) = 3 

और बहुत आगे है ...

मूल रूप से

, मैं nargs() की उपयोगिता चाहते हैं लेकिन समारोह के बाहर से:

fa = function(x){} 
fb = function(x,y){} 
fc = function(x,y,z){} 

तो मैं एक समारोह, f, जहां निर्धारित करना चाहते हैं प्रश्न में।

उपर्युक्त कारण यह है कि optim(...) के विशिष्ट कार्यान्वयन के लिए मुझे फ़ंक्शन की अपेक्षा की जाने वाली तर्कों की संख्या जानने की आवश्यकता है, जहां फ़ंक्शन अनुकूलित किया गया है, रनटाइम पर निर्धारित और उत्पन्न होता है।

+6

हो सकता है कि 'formals' यहाँ उपयोगी होगा। उदाहरण के लिए, 'औपचारिक (ऑप्टिमाइज़) '। – lmo

+1

आप फ़ंक्शन नाम के रूप में c() का उपयोग नहीं करेंगे, है ना? :) – neilfws

+2

'x <- फ़ंक्शन (ए = 1, बी = 2) ए^बी; लंबाई (औपचारिक (x)); # 2' – zx8754

उत्तर

8

एक संभावित दृष्टिकोण:

b <- function(x, y) {} 
length(formals(b)) 
# [1] 2 
+0

एक है। चीयर्स। –