मेरे neverending खोज चीजों को तोड़ने के लिए में, पर विचार करें:जांच करने का तरीका संशोधित समारोह औपचारिक
gbar<-function(x,y,x,a) x+2*y-4*a
Error: repeated formal argument 'x' on line 1
R
ठीक से अवैध औपचारिक के लिए मेरे परिभाषित समारोह जाँच करता है।
लेकिन यदि मैं ऊपर मैन्युअल रूप से बेईमानी से बातें:
ffoo<-function(x,y,a) x+2*y-4*a
formals(ffoo)<-c(x=7, formals(ffoo))
तब मैं केवल बाहर कुछ परिस्थितियों है कि कुछ अवैध है के तहत मिल जाएगा। ffoo(3,4,5,6)
ठीक से निष्पादित करेगा (हालांकि शायद मुझे वह उत्तर नहीं दे रहा है), जैसा कि ffoo(y=3,a=2)
होगा; जबकि ffoo(x=5,y=3,a=2)
संदिग्ध तर्क नामों के बारे में एक त्रुटि फेंक देगा।
तो क्या कोई मौजूदा फ़ंक्शन के formals
पर 'सैनिटी' जांच करने के लिए कोई फ़ंक्शन के साथ base-R
या उन्नत उपयोगिता पैकेज है?
मैं एक अनुसंधान समारोह नहीं मिल सकता है, लेकिन आप सी पढ़ सकते हैं [src/main/gram.y] पर कोड (https://github.com/wch/r-source/blob/cf829c12299b8571cd67e9d8aae88ac31450c73c/src/main/gram.y)। फ़ंक्शन 'चेकफॉर्मलअर्ग्स() ' – Andrie
@ रिचर्डस्क्रिवन नंबर के लिए खोजें, मैंने वर्ष का जवाब स्वीकार कर लिया है। मेरा अंतिम समाधान 'फॉर्मल्स' में वास्तविक नामों को पार करना और मैचों में से 'do.call' बनाना था। मैं इसे "उत्तर-विस्तार" के रूप में पोस्ट करूंगा –