R: स्लॉट्स क्या हैं?


79

क्या किसी को पता है कि एक स्लॉट आर में क्या है?

मुझे इसके अर्थ का स्पष्टीकरण नहीं मिला। मुझे एक पुनरावर्ती परिभाषा मिलती है: "स्लॉट फ़ंक्शन रिटर्न या वस्तुओं के व्यक्तिगत स्लॉट के बारे में जानकारी सेट करता है"

मदद की सराहना की जाएगी, धन्यवाद - गली


यह slot()फंक्शन पर मदद से है - यह दस्तावेज करने के लिए नहीं है कि एक स्लॉट क्या है, बस उन्हें कैसे एक्सेस करना है।
गैविन सिम्पसन

जवाबों:


87

स्लॉट्स S4 ऑब्जेक्ट्स से जुड़े होते हैं। एक स्लॉट को एक वस्तु के एक भाग, तत्व या "संपत्ति" के रूप में देखा जा सकता है। मान लें कि आपके पास एक कार ऑब्जेक्ट है, तो आपके पास स्लॉट "मूल्य", "दरवाजे की संख्या", "इंजन का प्रकार", "माइग्रेशन" हो सकता है।

आंतरिक रूप से, यह एक सूची का प्रतिनिधित्व करता है। एक उदाहरण :

setClass("Car",representation=representation(
   price = "numeric",
   numberDoors="numeric",
   typeEngine="character",
   mileage="numeric"
))
aCar <- new("Car",price=20000,numberDoors=4,typeEngine="V6",mileage=143)

> aCar
An object of class "Car"
Slot "price":
[1] 20000

Slot "numberDoors":
[1] 4

Slot "typeEngine":
[1] "V6"

Slot "mileage":
[1] 143

यहां, कीमत, नंबरडोर्स, टाइपबाइन और माइलेज एस 4 क्लास "कार" के स्लॉट हैं। यह एक तुच्छ उदाहरण है, वास्तव में स्लॉट्स में फिर से जटिल ऑब्जेक्ट हो सकते हैं।

स्लॉट को कई तरीकों से एक्सेस किया जा सकता है:

> aCar@price
[1] 20000
> slot(aCar,"typeEngine")
[1] "V6"    

या एक विशिष्ट विधि के निर्माण के माध्यम से (अतिरिक्त दस्तावेज देखें)।

S4 प्रोग्रामिंग पर अधिक जानकारी के लिए यह प्रश्न देखें । यदि अवधारणा अभी भी आपको अस्पष्ट लगती है, तो ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में एक सामान्य परिचय मदद कर सकता है।

पुनश्च: डेटाफ़्रेम और सूचियों के साथ अंतर को ध्यान में रखें, जहां आप $नामित चर / तत्वों का उपयोग करने के लिए उपयोग करते हैं।


3
+1 अच्छा जवाब जोरिस। आप एक slot(aCar, "price")और उपयोग के रूप में एक उदाहरण जोड़ना चाहते हो सकता है , esp के रूप में इस slot()समारोह में देख रहा था
गेविन सिम्पसन

धन्यवाद, आपका उत्तर बहुत मददगार था !!
user573347

9
और एक वर्ग के सभी स्लॉट प्राप्त करने के लिए getSlots(), या slotNames()उनके नामों के लिए है।
लॉरेंट

18

जिस तरह एक जटिल चर के names(variable)सभी $-अकेले नाम को सूचीबद्ध करता है , उसी तरह

slotNames(object) किसी ऑब्जेक्ट के सभी स्लॉट को सूचीबद्ध करता है।

यह देखने के लिए बहुत आसान है कि आपके फिट रहने वाले आनंद के लिए आपके फिट-ऑब्जेक्ट में क्या अच्छा है।


10

संसाधनों के अलावा @ जॉरिस आपको अपने स्वयं के उत्तर के अलावा, पढ़ने की कोशिश करता है ?Classes, जिसमें स्लॉट पर निम्नलिखित शामिल हैं:

 Slots:

      The data contained in an object from an S4 class is defined
      by the _slots_ in the class definition.

      Each slot in an object is a component of the object; like
      components (that is, elements) of a list, these may be
      extracted and set, using the function ‘slot()’ or more often
      the operator ‘"@"’.  However, they differ from list
      components in important ways.  First, slots can only be
      referred to by name, not by position, and there is no partial
      matching of names as with list elements.
      ....

1

पता नहीं क्यों R को हर चीज को फिर से परिभाषित करना पड़ता है। अधिकांश सामान्य प्रोग्रामिंग भाषाएं उन्हें "गुण" या "गुण" कहती हैं।


यह एक वैध टिप्पणी है। आइए मानते हैं कि आर quirky डिजाइन विकल्पों से भरा है।
राजा क्रिमसन

मैं 70 के दशक से उस तारीख की विशेषताओं के लिए अजीब शब्दावली को समझ सकता हूं, लेकिन स्लॉट उनके बीच नहीं हैं, वे वास्तव में जुड़ गए जब अधिकांश ओओ भाषाओं में उनके पीछे दसियों साल थे।
अधिकतम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.