मोड, कक्षा और आर वस्तुओं का प्रकार


39

मैं सोच रहा था कि मोड, क्लास और टाइप ऑफ़ R ऑब्जेक्ट्स में क्या अंतर हैं? आर ऑब्जेक्ट का प्रकार टाइपोफ () फ़ंक्शन, मोड बाय मोड (), और क्लास बाय क्लास () द्वारा प्राप्त किया जा सकता है।

इसके अलावा किसी भी अन्य इसी तरह के कार्यों और अवधारणाओं कि मुझे याद किया?

धन्यवाद एवं शुभकामनाएँ!


2
str (परिवर्तनशील) आपका सबसे अच्छा दोस्त है।
ब्रेंडन बर्टेल्सन

2
आर भी देखें : स्टैक ओवरफ्लो पर चर और प्रकार के प्रश्न।
सिंह

जवाबों:


21

class()परिभाषित / क्या "प्रकार" एक वस्तु के लिए आर तो में ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग की दृष्टि से है पहचान करने के लिए प्रयोग किया जाता है

> x <- 1:3
> class(x)
[1] "integer"

कोई भी सामान्य फ़ंक्शन जिसमें "पूर्णांक" विधि का उपयोग किया जाएगा।

typeof()R के दृष्टिकोण से वस्तु mode()का "प्रकार" देता है , जबकि Becker, Chambers & Wilks (1988) के दृष्टिकोण से वस्तु का "प्रकार" देता है। R भाषा परिभाषा नियमावली के अनुसार अन्य S कार्यान्वयन के साथ उत्तरार्द्ध अधिक संगत हो सकता है ।

मैं शायद typeof()ज्यादातर मामलों में उपयोग करने के पक्ष में गलत हूं जब तक कि यह आर वस्तुओं को संकलित कोड को पारित करने के लिए नहीं था, जहां storage.mode()उपयोगी होगा।

यह उपरोक्त रूप में आर भाषा परिभाषा में उपयोगी रूप से चर्चा की गई है।


3
क्यों देखने के इतने सारे बिंदु हैं? मुझे कोई लाभ नहीं है लेकिन भ्रम है।
smwikipedia

1
@smwikipedia क्योंकि R में एक विरासत है जिसमें S-Plus और S शामिल हैं और यह बाद की भाषा समय के साथ विकसित हुई। इसके अलावा, उन ऑब्जेक्ट्स के बीच अंतर करने की आवश्यकता है जो उपयोगकर्ता बना सकते हैं और आधार ऑब्जेक्ट प्रकार।
मोनिका - जी। सिम्पसन

@smwikipedia क्योंकि यह सिर्फ आर कैसे है। उसी कारण से हमारे पास <-और =चर असाइनमेंट के लिए है।
आंद्रे टेरा

9

प्रेषक: https://www.mail-archive.com/r-help@r-project.org/msg17169.html :

ually मोड ’अपनी मूल संरचना के अनुसार वस्तुओं का परस्पर अनन्य वर्गीकरण है। 'परमाणु' मोड संख्यात्मक, जटिल, चरित्र और तार्किक हैं। पुनरावर्ती वस्तुओं में 'सूची' या 'फ़ंक्शन' या कुछ अन्य जैसे मोड होते हैं। एक ऑब्जेक्ट में एक और केवल एक मोड होता है।

assigned वर्ग ’एक ऐसी वस्तु है जिसे किसी वस्तु को सौंपा जाता है जो यह निर्धारित करती है कि इसके साथ सामान्य कार्य कैसे संचालित होते हैं। यह पारस्परिक रूप से अनन्य वर्गीकरण नहीं है। यदि किसी ऑब्जेक्ट में कोई विशिष्ट वर्ग नहीं दिया गया है, जैसे कि एक साधारण संख्यात्मक वेक्टर, तो यह कक्षा आमतौर पर कन्वेंशन द्वारा अपने मोड के समान होती है।

किसी वस्तु के मोड को बदलने को अक्सर 'ज़बरदस्ती' कहा जाता है। किसी वस्तु का मोड आवश्यक रूप से कक्षा को बदलने के बिना बदल सकता है।


1

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

> x<-list("a",c(1,2))

> # x is a list
> class(x)
[1] "list"
> # class can be user defined
> class(x)<-"newclass"
> class(x)
[1] "newclass"

> typeof(x)
[1] "list"
# you cannot assign a different type using typeof()
> typeof(x)<-"newclass"
Error in typeof(x) <- "newclass" : could not find function "typeof<-" 

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


के लिए Rप्रलेखन के अनुसार typeofऔर class, "मुख्य अंतर" के बारे में दावा गलत है। classएक वस्तु का एक गुण है जिसे इसके आंतरिक भंडारण मोड की परवाह किए बिना सौंपा जा सकता है, जबकि "टाइपोफ़ किसी भी वस्तु के (आर आंतरिक) प्रकार या भंडारण मोड को निर्धारित करता है।" एक तार्किक विशेषता का वर्णन करता है जबकि दूसरा किसी वस्तु की भौतिक विशेषता है।
whuber
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.