कार्यों में `…` `(तीन-बिंदु या डॉट-डॉट-डॉट) का उपयोग [डुप्लिकेट]


84

मैं ...फ़ंक्शंस के उपयोग पर प्रलेखन कहां पा सकता हूं ? उदाहरण उपयोगी होंगे।


3
अजगर उपयोगकर्ताओं को आर सीखने के लिए, एक त्वरित उत्तर यह होगा कि ...आर अजगर के कीवर्ड इनपुट के बराबर है ( def func(**kwargs))
अन्ना

जवाबों:


75

वर्णन करने के लिए प्रयुक्त शब्द ..."दीर्घवृत्त" है। यह जानते हुए कि निर्माण के बारे में जानकारी को आसान बनाना चाहिए। उदाहरण के लिए, Google पर पहली हिट इस साइट पर एक और सवाल है: अपने स्वयं के फ़ंक्शन को लिखते समय आर की दीर्घवृत्त सुविधा का उपयोग कैसे करें?


3
वास्तव में R में आधिकारिक नाम है dots, उदाहरण के लिए मदद पृष्ठ का नाम है ?dotsऔर "दीर्घवृत्त" पृष्ठ पर भी उल्लेख नहीं किया गया है
माइकलक्रिको

मदद फ़ाइलों के बारे ?dotsमें, मेरे लिए काम नहीं करता है, लेकिन ?'...'करता है।
सीओपी

54

आपको शुरू करने के लिए एक छोटा सा उदाहरण।

f <- function(x, ...)
{
  dots <- list(...)                   #1
  if(length(dots) == 0) return(NULL) 
  cat("The arguments in ... are\n")
  print(dots)
  f(...)                              #2
}

f(1,2,3,"a", list("monkey"))

फ़ंक्शन, fस्टोर करता है, लेकिन इलिप्सिस चर में पहला इनपुट तर्क। इसकी सामग्री तक पहुँचने के लिए, इसे एक सूची (1) में बदलना आसान है। हालांकि मुख्य उपयोग उप-तर्क के लिए तर्क पारित करने के लिए है, जिसके लिए रूपांतरण (2) की आवश्यकता नहीं है।


क्यों # 2 में एक ही एफ फ़ंक्शन को फिर से कॉल करें?
जियापेंग झांग

1
@ जियापेंगझंग यह एक पुनरावर्ती कार्य का एक उदाहरण है। f()हर बार अलग-अलग तर्कों के साथ बार-बार फोन किया जाता है। कोड चलाएं और देखें कि क्या आप समझ सकते हैं कि क्या हो रहा है।
रिची कॉटन

2
यह एक महान उदाहरण के ...length()रूप में अच्छी तरह से प्रदर्शित करने के लिए होगा
माइकलचिरिको

19

आपको "आर लैंग्वेज डेफिनिशन", सेक्शन 2.1.9 डॉट-डॉट-डॉट पर जाना चाहिए । यह आर इंस्टॉलेशन के साथ बंडल में आता है। help.start()HTML की मदद करने के लिए एक इंटरैक्टिव सत्र में भाग लें, और R भाषा परिभाषा लिंक पर क्लिक करें । आप मुख्य साइट से भी पीडीएफ या एचटीएमएल संस्करण का उपयोग कर सकते हैं ।

वैसे भी, ...किसी फ़ंक्शन के अनिर्दिष्ट औपचारिक तर्कों का मिलान करने के लिए उपयोग किया जाता है।

args(sapply)                                                                                                               
function (X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)                                                                    
NULL   

sapply(mtcars, mean, trim = .5)                                                                                            
    mpg     cyl    disp      hp    drat      wt    qsec      vs      am    gear                                              
 19.200   6.000 196.300 123.000   3.695   3.325  17.710   0.000   0.000   4.000                                              
   carb                                                                                                                      
  2.000 

जैसा कि आप देख सकते हैं, मैं पारित हो गया, trim = .5हालांकि यह sapplyफ़ंक्शन के औपचारिक तर्क के रूप में निर्दिष्ट नहीं है।

(ध्यान दें कि यह उदाहरण तुच्छ है, आप sapply(mtcars, median)उसी परिणाम को प्राप्त करने के लिए उपयोग कर सकते हैं )


1
यदि यह निर्दिष्ट नहीं है, तो आप कैसे जानते हैं कि यह कानूनी या वैध है?
१०:१०

1
@qed फ़ंक्शन trimका एक तर्क है mean...में sapplyके लिए तंत्र हैं trimको पास करने की mean
रिची कॉटन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.