दो आर प्रश्न:
- एक चर के प्रकार (द्वारा लौटा
typeof
) और वर्ग (द्वारा लौटाclass
) के बीच क्या अंतर है ? क्या अंतर, सी + + भाषा के समान है? - चर के संभावित प्रकार और वर्ग क्या हैं?
जवाबों:
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
प्रत्येक प्रकार के लिए संबंधित हैं।
oldClass(matrix(1:10, 2,5)) # NULL
type
वास्तव में आर में उपलब्ध विभिन्न डेटा संरचनाओं को संदर्भित करता है। आर भाषा परिभाषा मैनुअल में यह चर्चा आपको वस्तुओं और प्रकारों पर शुरू हो सकती है।
दूसरी ओर, class
आर में कुछ और का मतलब है कि आप क्या उम्मीद कर सकते हैं। से आर भाषा परिभाषा पुस्तिका (कि आर के अपने संस्करण के साथ आया था):
2.2.4 कक्षाएं
आर में एक विस्तृत वर्ग प्रणाली 1 है , मुख्य रूप से वर्ग विशेषता के माध्यम से नियंत्रित किया जाता है। यह विशेषता एक वर्ण वेक्टर है जिसमें उन कक्षाओं की सूची होती है जो किसी ऑब्जेक्ट से विरासत में मिली हैं। यह आर में "सामान्य तरीके" कार्यक्षमता का आधार बनाता है।
इस विशेषता को उपयोगकर्ताओं द्वारा प्रतिबंध के बिना वस्तुतः एक्सेस और हेरफेर किया जा सकता है। कोई जाँच नहीं है कि किसी ऑब्जेक्ट में वास्तव में घटक होते हैं जो वर्ग विधियों की अपेक्षा करते हैं। इस प्रकार, क्लास की विशेषता में बदलाव सावधानी के साथ किया जाना चाहिए, और जब वे उपलब्ध हैं विशिष्ट निर्माण और जबरदस्ती कार्यों को प्राथमिकता दी जानी चाहिए।