अगर मैं इस तरह के रूप में एक एस 4 वर्ग है:क्लास फ़ंक्शन का उपयोग करते हुए एस 4 ऑब्जेक्ट की "कक्षा" को बदलते समय क्या हो रहा है?
setClass("MyClass",
representation(
data="data.frame",
name="character"))
और यह दृष्टांत (obj
को कहते हैं),
obj <- new('MyClass', data=data.frame(1:3), name='An S4 class')
मैं निम्नलिखित प्रतिनिधित्व करना होगा: अब तक
An object of class "MyClass"
Slot "data":
X1.3
1 1
2 2
3 3
Slot "name":
[1] "An S4 class"
बहुत अच्छा।
हालांकि, अगर मैं का उपयोग कर "वर्ग" को बदलने की कोशिश:
class(obj) <- "animal"
मैं अब
An object of class "animal"
<S4 Type Object>
attr(,"data")
X1.3
1 1
2 2
3 3
attr(,"name")
[1] "An S4 class"
मिलता और अगर मैं क्या यह अभी भी एक एस 4 वर्ग है की जाँच करने के लिए प्रयास करें, यह वापस लौटें:
>isS4(obj)
[1] TRUE
वास्तव में क्या हो रहा है? "स्लॉट" गुणों में क्यों बदल गए? क्या यह वास्तव में अभी भी एक एस 4 वर्ग है?
अद्यतन:
व्यापक जवाब के लिए धन्यवाद। बस स्पष्ट करने के लिए, मैं इसे किसी भी वास्तविक परिदृश्य में काम करने या उपयोग करने की उम्मीद नहीं कर रहा था। मैं बस इस व्यवहार के पीछे तंत्र को बेहतर समझना चाहता था। इसके अलावा, "सर्वश्रेष्ठ" उत्तर चुनना मुश्किल है (वे सभी उत्कृष्ट हैं) लेकिन, एसओ की भावना के भीतर, मुझे एक चुनना होगा।
मुझे लगता है कि आपने अभी क्लास एट्रिब्यूट जोड़ा है, और हाइब्रिड एस 3-एस 4 ऑब्जेक्ट बनाया है। मैं किसी भी मुद्रण विधियों पर भरोसा नहीं करता क्योंकि उन्हें शायद इस तरह की अजीब वस्तु से निपटने के लिए डिजाइन नहीं किया गया था। – hadley