2012-06-07 7 views
22

मुझे शब्दकोष के साथ थोड़ी सी सहायता चाहिए, और उदाहरण कोड का एक छोटा टुकड़ा। जब आप ऑब्जेक्ट का नाम टाइप करते हैं और एंटर दबाते हैं तो विभिन्न प्रकार के ऑब्जेक्ट्स को स्वयं को आउटपुट करने का एक विशिष्ट तरीका होता है, एक एलएम ऑब्जेक्ट मॉडल का सारांश दिखाता है, वेक्टर वेक्टर की सामग्री सूचीबद्ध करता है।उदाहरण की आवश्यकता है: किसी ऑब्जेक्ट की डिफ़ॉल्ट प्रिंट विधि बदलें

मैं एक विशिष्ट प्रकार की वस्तु की सामग्री को "दिखाने" के लिए अपना रास्ता लिखने में सक्षम होना चाहता हूं। आदर्श रूप में, मैं मौजूदा प्रकार की वस्तुओं से इसे अलग करने में सक्षम होना चाहता हूं।

मैं यह करने के बारे में कैसे जाउंगा?

+1

शायद 'विधि' देखें - पृष्ठ के निचले भाग के पास उदाहरण हैं। – BenBarnes

+1

सावधान रहें यदि आप NAMESPACE वाले पैकेज द्वारा प्रदान की गई S3 क्लास ऑब्जेक्ट की प्रिंट विधि को बदलने का प्रयास कर रहे हैं, जो आर के आधुनिक संस्करण के साथ सभी पैकेज हैं। यदि आप मौजूदा के लिए एक नया 'प्रिंट()' विधि लिखते हैं कक्षा, आपको प्रिंट विधि के अपने स्थानीय संस्करण को असाइन इननामस्पेस (....) 'की आवश्यकता हो सकती है। –

+0

दिशा बेन और टिप गेविन के लिए धन्यवाद। –

उत्तर

25

यहां शुरू करने के लिए एक उदाहरण दिया गया है। एक बार जब आपको S3 विधियों को प्रेषित किया जाता है, तो मूलभूत विचार प्राप्त हो जाने के बाद, methods("print") द्वारा लौटाए गए किसी भी प्रिंट विधियों पर नज़र डालें, यह देखने के लिए कि आप अधिक रोचक प्रिंट शैलियों को कैसे प्राप्त कर सकते हैं।

## Define a print method that will be automatically dispatched when print() 
## is called on an object of class "myMatrix" 
print.myMatrix <- function(x) { 
    n <- nrow(x) 
    for(i in seq_len(n)) { 
     cat(paste("This is row", i, "\t: ")) 
     cat(x[i,], "\n") 
     } 
} 

## Make a couple of example matrices 
m <- mm <- matrix(1:16, ncol=4) 

## Create an object of class "myMatrix". 
class(m) <- c("myMatrix", class(m)) 
## When typed at the command-line, the 'print' part of the read-eval-print loop 
## will look at the object's class, and say "hey, I've got a method for you!" 
m 
# This is row 1 : 1 5 9 13 
# This is row 2 : 2 6 10 14 
# This is row 3 : 3 7 11 15 
# This is row 4 : 4 8 12 16 

## Alternatively, you can specify the print method yourself. 
print.myMatrix(mm) 
# This is row 1 : 1 5 9 13 
# This is row 2 : 2 6 10 14 
# This is row 3 : 3 7 11 15 
# This is row 4 : 4 8 12 16 
+0

बिल्कुल मुझे क्या चाहिए। मेरी भाषा सभी गलत "टाइप" = "कक्षा", "आउटपुट करने का तरीका" = "विधि" –

+0

मिमी का बिंदु मुझे दिखा रहा था कि ऑब्जेक्ट को प्रिंट फ़ंक्शन के लिए "myMatrix" वर्ग नहीं होना चाहिए था काम? –

+0

हाँ। मैंने मूल रूप से पूरे विषय को नष्ट करने में मदद करने के लिए इसे शामिल किया, और यह दिखाने के लिए कि 'print.myMatrix' एक और कार्य है जिसे किसी ऑब्जेक्ट पर लागू किया जा सकता है। इसके बारे में विशेष बात यह है कि इसका नाम '.myMatrix' हिस्सा है, जो इसे 'UseMethod' कॉल द्वारा प्राप्त किया जा सकता है जिसे 'प्रिंट()' के कॉल के लिए कॉल किया जाता है। यकीन नहीं है कि यह कितना सफल था, लेकिन यह मेरा इरादा था। –

संबंधित मुद्दे