R में "।" (डॉट) का क्या अर्थ है?


39

मैं सिर्फ "आर इन ए नटशेल" पुस्तक पढ़ रहा हूं। और ऐसा लगता है जैसे मैंने उस हिस्से को छोड़ दिया जहां "।" जैसा कि "sample.formula" में समझाया गया था।

> sample.formula <- as.formula(y~x1+x2)

क्या अन्य भाषाओं के समान फ़ील्ड फॉर्मूला के साथ एक वस्तु का नमूना है? और यदि हां, तो मैं कैसे पता लगा सकता हूं कि इस ऑब्जेक्ट में अन्य फ़ील्ड / फ़ंक्शन क्या हैं? (प्रकार की घोषणा)

संपादित करें: मैंने अभी "" का एक और भ्रामक उपयोग पाया।

> svm(formula = is_spam~., data = spambase.training)

(~ के बीच बिंदी)


आप जिस डॉट को is_spam ~ के साथ देखते हैं। कमांड का मतलब है कि कोई व्याख्यात्मक चर नहीं हैं। आमतौर पर मॉडल फ़ार्मुलों के साथ, आपको y ~ x दिखाई देगा, लेकिन अगर आपके पास कोई x चर नहीं है, तो y ~। कोई अन्य चर का उपयोग करके y के मूल्य का अनुमान लगाने के लिए कहता है। यह मॉडलy=β0
क्रिस्टोफर एडेन

12
@ क्रिस्‍टोफर इसके विपरीत, .सूत्र सूत्र में R को डेटाफ़्रेम spambase.training(छोड़कर is_spam) में सभी चर का उपयोग भविष्यवाणियों के रूप में करने के लिए कहता है । मॉडल साथ फिट है । y=β0y ~ 1
काराकल

मैं पहले से स्रोतों की जाँच नहीं करता था। सुधार के लिए धन्यवाद!
क्रिस्टोफर एडन

@caracal (+1) वाह मैं सोच रहा था कि यह कैसे किया जाए। धन्यवाद!
थॉमस लेविन

जवाबों:


30

डॉट का उपयोग सामान्य नाम के रूप में किया जा सकता है। हालांकि इसकी अतिरिक्त विशेष व्याख्या है। मान लीजिए कि हमारे पास विशिष्ट वर्ग के साथ एक वस्तु है:

 a <- list(b=1)
 class(a) <- "myclass"

अब myfunctionनिम्नलिखित तरीके से मानक सामान्य घोषित करें :

 myfunction <- function(x,...) UseMethod("myfunction")

अब फ़ंक्शन की घोषणा करें

 myfunction.myclass <- function(x,...) x$b+1

फिर बिंदी का विशेष अर्थ है। क्लास myclassकॉलिंग वाली सभी वस्तुओं के लिए

 myfunction(a)

वास्तविक कॉल समारोह होगा myfunction.myclass:

 > myfunction(a)
  [1] 2

यह आर में व्यापक रूप से उपयोग किया जाता है, सबसे उपयुक्त उदाहरण फ़ंक्शन है summary। प्रत्येक वर्ग का अपना summaryकार्य होता है, इसलिए जब आप उदाहरण के लिए कुछ मॉडल फिट करते हैं (जो आमतौर पर विशिष्ट वर्ग के साथ वस्तु लौटाता है), तो आपको आमंत्रित summaryकरना होगा और यह उस विशिष्ट मॉडल के लिए उपयुक्त सारांश फ़ंक्शन को बुलाएगा।


मुझे बहुत आश्चर्य है कि इस उत्तर को स्वीकार कर लिया गया और इसे बहुत बढ़ा-चढ़ा कर पेश किया गया, क्योंकि यह सवाल का बिल्कुल भी जवाब नहीं देता है! यह शब्द "डॉट" के रूप में दीर्घवृत्त ... (जो कि एक एकल शब्द है, तीन अलग-अलग लोगों का अनुक्रम नहीं है) को संदर्भित करता है, जबकि प्रश्न का स्पष्ट रूप से एक बिंदु . है जिसका उपयोग सूत्रों और नामों में एक बिल्कुल अलग तरीके से किया जाता है, जैसा कि एक समकालीन में सही ढंग से वर्णित है। चेस द्वारा जवाब।
whuber

3
वैसे मैं दीर्घवृत्त का उल्लेख नहीं करता। मैंने यह समझाने की कोशिश की कि डॉट का उपयोग S3 विधि प्रेषण के लिए किया जाता है। सामान्य कार्यों में आमतौर पर दीर्घवृत्त होते हैं, यही कारण है कि मैंने उनका उपयोग किया है। यदि उन्हें कोड से हटा दिया जाता है, तो उत्तर नहीं बदलेगा। मैं केवल यह अनुमान लगा सकता हूं कि मैंने संपादित करने से पहले उत्तर दिया था, क्योंकि मैं प्रश्न निकाय को पुन: प्रस्तुत करने के बाद अब एक अलग उत्तर दूंगा।
एमपिकटस

1
विवरण के लिए आपका धन्यवाद। मुझे लगता है कि "..." की उपस्थिति ने दो बार मुझे विश्वास दिलाया कि आप इसे "डॉट" के रूप में संदर्भित कर रहे हैं।
whuber

12

यहां संबंधित बिट्स के ?formulaसंबंध में सहायता पृष्ठ देखें .:

की दो विशेष व्याख्याएँ हैं। एक सूत्र में। सामान्य रूप से मॉडल फिटिंग फ़ंक्शन के डेटा तर्क के संदर्भ में है और इसका अर्थ है 'सभी कॉलम अन्यथा सूत्र में नहीं हैं': terms.formula देखें। Update.formula के संदर्भ में, केवल इसका अर्थ है, 'सूत्र के इस भाग में पहले क्या था'।

वैकल्पिक रूप से, reshapeऔर reshape2संकुल का उपयोग .और ...थोड़ा अलग (से ?cast):

विशेष चर के एक जोड़े हैं: "..." सूत्र में उपयोग नहीं किए गए सभी अन्य चर का प्रतिनिधित्व करता है और "।" कोई चर नहीं दर्शाता है


5

कुछ अपवाद हैं (S3 विधि प्रेषण), लेकिन आमतौर पर इसका उपयोग केवल सुगमता सहायता के रूप में किया जाता है, और जैसे कि इसका कोई विशेष अर्थ नहीं है।


2
मैं इसके विपरीत कहूंगा - इसका विशेष अर्थ है (S3 प्रेषण आप उल्लेख करते हैं), लेकिन कुछ पुराने नामकरण परंपराओं के कारण फ़ंक्शन नाम होते हैं जिनमें नाम शामिल करने के लिए S3 जेनरिक नहीं हैं .। यह कार्यों के नाम से संबंधित है। (गैर-फ़ंक्शन) ऑब्जेक्ट्स के नामों के लिए, फिर हाँ, कोई विशेष अर्थ नहीं है।
मोनिका को बहाल करें - जी। सिम्पसन

एक नाम की शुरुआत में, .वस्तु को ls()हालांकि अदृश्य बना देता है ।
काराकल

2

Sample.formula में डॉट , नेत्रहीन के अलावा, सूत्र से नमूने को अलग नहीं करता है । यह सिर्फ एक चर नाम है। चर नामों में अल्फ़ान्यूमेरिक्स और डॉट (।) शामिल हो सकते हैं और एक अपवाद के साथ अंडरस्कोर (_) हो सकता है। यहाँ वास्तविक नियम है:

" एक वाक्यात्मक रूप से वैध नाम में अक्षर, संख्याएँ और बिंदु होते हैं या वर्णों को रेखांकित करते हैं और एक अक्षर या बिंदु के साथ शुरू होते हैं जो एक संख्या से नहीं होते हैं।" .2way "जैसे नाम मान्य नहीं हैं, और न ही आरक्षित शब्द हैं। "

दूसरा मामला (यानी, is_spam ~ का मामला अलग है) और ऊपर समझाया गया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.