चर के प्रकार और वर्ग


84

दो आर प्रश्न:

  1. एक चर के प्रकार (द्वारा लौटा typeof) और वर्ग (द्वारा लौटा class) के बीच क्या अंतर है ? क्या अंतर, सी + + भाषा के समान है?
  2. चर के संभावित प्रकार और वर्ग क्या हैं?

यह संबंधित पोस्ट उपयोगी जानकारी भी प्रदान कर सकती है: stackoverflow.com/questions/8855589/…
डोमिनिक कोमोटिस

जवाबों:


96

R में प्रत्येक "ऑब्जेक्ट" में a modeऔर a है class। पूर्व का प्रतिनिधित्व करता है कि स्मृति (संख्यात्मक, चरित्र, सूची और फ़ंक्शन) में कोई ऑब्जेक्ट कैसे संग्रहीत किया जाता है जबकि बाद में इसके सार प्रकार का प्रतिनिधित्व करता है। उदाहरण के लिए:

d <- data.frame(V1=c(1,2))
class(d)
# [1] "data.frame"
mode(d)
# [1] "list"
typeof(d)
# list

जैसा कि आप देख सकते हैं कि डेटा फ़्रेम को मेमोरी में संग्रहीत किया जाता है, listलेकिन वे data.frameवस्तुओं में लिपटे हुए हैं। उत्तरार्द्ध सदस्य कार्यों के उपयोग के printसाथ-साथ एक कस्टम व्यवहार के साथ ओवरलोडिंग कार्यों की अनुमति देता है।

typeof( storage.mode) आमतौर पर एक जैसी जानकारी देंगे modeलेकिन हमेशा नहीं। इसका स्पष्ट उदाहरण:

typeof(c(1,2))
# [1] "double"
mode(c(1,2))
# [1] "numeric"

इसके पीछे का तर्क यहाँ पाया जा सकता है :

R विशिष्ट फ़ंक्शन टाइपोफ़ R ऑब्जेक्ट के प्रकार को लौटाता है

फंक्शन मोड बेकर, चेम्बर्स एंड विल्क्स (1988) के अर्थ में एक वस्तु के मोड के बारे में जानकारी देता है, और एस भाषा के अन्य कार्यान्वयन के साथ अधिक संगत है

ऊपर मैंने जो लिंक पोस्ट किया है, उसमें सभी देशी आर basic types(वैक्टर, सूची आदि) और सभी compound objects(कारक और डेटा.फ्रेम) के साथ-साथ कुछ उदाहरण भी हैं mode, typeofऔर classप्रत्येक प्रकार के लिए संबंधित हैं।


1
"आर में हर" ऑब्जेक्ट में एक मोड और एक वर्ग होता है "जब तक वे एस 4 ओओपी वर्ग संरचना के दृष्टिकोण से देखे जाते हैं। S3 में, वस्तुओं को वर्ग नाम नहीं दिया जा सकता है:oldClass(matrix(1:10, 2,5)) # NULL
एर्दोगन CEVHER

6

typeवास्तव में आर में उपलब्ध विभिन्न डेटा संरचनाओं को संदर्भित करता है। आर भाषा परिभाषा मैनुअल में यह चर्चा आपको वस्तुओं और प्रकारों पर शुरू हो सकती है।

दूसरी ओर, classआर में कुछ और का मतलब है कि आप क्या उम्मीद कर सकते हैं। से आर भाषा परिभाषा पुस्तिका (कि आर के अपने संस्करण के साथ आया था):

2.2.4 कक्षाएं

आर में एक विस्तृत वर्ग प्रणाली 1 है , मुख्य रूप से वर्ग विशेषता के माध्यम से नियंत्रित किया जाता है। यह विशेषता एक वर्ण वेक्टर है जिसमें उन कक्षाओं की सूची होती है जो किसी ऑब्जेक्ट से विरासत में मिली हैं। यह आर में "सामान्य तरीके" कार्यक्षमता का आधार बनाता है।

इस विशेषता को उपयोगकर्ताओं द्वारा प्रतिबंध के बिना वस्तुतः एक्सेस और हेरफेर किया जा सकता है। कोई जाँच नहीं है कि किसी ऑब्जेक्ट में वास्तव में घटक होते हैं जो वर्ग विधियों की अपेक्षा करते हैं। इस प्रकार, क्लास की विशेषता में बदलाव सावधानी के साथ किया जाना चाहिए, और जब वे उपलब्ध हैं विशिष्ट निर्माण और जबरदस्ती कार्यों को प्राथमिकता दी जानी चाहिए।

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