मुझे दिलचस्पी है कि आर। में वैकल्पिक तर्कों के साथ फ़ंक्शन लिखने के लिए "सही" तरीका क्या है, समय के साथ, मैं कोड के कुछ टुकड़ों पर ठोकर खाई, जो यहां एक अलग मार्ग लेते हैं, और मुझे एक उचित (आधिकारिक) स्थिति नहीं मिली इस विषय पर।
अब तक, मैंने इस तरह के वैकल्पिक तर्क लिखे हैं:
fooBar <- function(x,y=NULL){
if(!is.null(y)) x <- x+y
return(x)
}
fooBar(3) # 3
fooBar(3,1.5) # 4.5
फ़ंक्शन केवल अपना तर्क देता है यदि केवल x
आपूर्ति की जाती है। यह NULL
दूसरे तर्क के लिए एक डिफ़ॉल्ट मान का उपयोग करता है और यदि वह तर्क नहीं होता है NULL
, तो फ़ंक्शन दो नंबर जोड़ता है।
वैकल्पिक रूप से, कोई इस तरह से फ़ंक्शन लिख सकता है (जहां दूसरे तर्क को नाम से निर्दिष्ट करने की आवश्यकता है, लेकिन कोई इसके बजाय unlist(z)
परिभाषित या परिभाषित भी कर सकता है z <- sum(...)
):
fooBar <- function(x,...){
z <- list(...)
if(!is.null(z$y)) x <- x+z$y
return(x)
}
fooBar(3) # 3
fooBar(3,y=1.5) # 4.5
व्यक्तिगत रूप से मैं पहला संस्करण पसंद करता हूं। हालांकि, मैं अच्छे और बुरे दोनों को देख सकता हूं। पहला संस्करण त्रुटि के लिए थोड़ा कम प्रवण है, लेकिन दूसरे को वैकल्पिक की एक मनमानी संख्या को शामिल करने के लिए इस्तेमाल किया जा सकता है।
क्या आर में वैकल्पिक तर्कों को निर्दिष्ट करने का एक "सही" तरीका है? अब तक, मैं पहले दृष्टिकोण पर बस गया हूं, लेकिन दोनों कभी-कभार "हैकी" महसूस कर सकते हैं।
xy.coords
आमतौर पर उपयोग किए जाने वाले दृष्टिकोण को देखने के लिए स्रोत कोड देखें।