वस्तु पहचान


119

मैं अक्सर एक ऐसे उत्पादन उत्पादन के साथ समाप्त होता हूं जिसके लिए मैं आउटपुट डेटा प्रकार को नहीं समझता हूं। मैं एक सूची की उम्मीद कर रहा हूं और यह सूची या डेटा फ्रेम या कुछ और की सूची को समाप्त करता है। किसी फ़ंक्शन का उपयोग करते समय आउटपुट डेटा प्रकार का पता लगाने के लिए एक अच्छी विधि या वर्कफ़्लो क्या है?

जवाबों:


126

मैं आमतौर पर कुछ संयोजन के साथ शुरू करता हूं:

typeof(obj)
class(obj)
sapply(obj, class)
sapply(obj, attributes)
attributes(obj)
names(obj)

के रूप में उपयुक्त क्या पता चला पर आधारित है। उदाहरण के लिए, इसके साथ प्रयास करें:

obj <- data.frame(a=1:26, b=letters)
obj <- list(a=1:26, b=letters, c=list(d=1:26, e=letters))
data(cars)
obj <- lm(dist ~ speed, data=cars)

..आदि।

यदि objएक S3 या S4 वस्तु है, आप भी कोशिश कर सकते हैं methodsया showMethods, showClassआदि पैट्रिक बर्न्स ' आर इन्फर्नो इस पर एक बहुत अच्छी खंड (सेक # 7) है।

EDIT : डिर्क और हेडली str(obj)ने अपने जवाब में उल्लेख किया है। यह वास्तव में किसी भी वस्तु में एक त्वरित और यहां तक ​​कि विस्तृत झांकने के लिए उपरोक्त में से बहुत बेहतर है।


1
मुझे नहीं लगता कि मैंने इसे आर इन्फर्नो के माध्यम से बनाया है। मुझे वापस वहां भेजने के लिए धन्यवाद।
जद लॉन्ग

3
यदि आपने इसे पहले से नहीं देखा है, तो "15 पृष्ठों में S4 ऑब्जेक्ट्स या उससे कम" [ stat.auckland.ac.nz/S-Workshop/Gentleman/S4Objects.pdf ] एक और अच्छी रीड (अधिक जानकारी के साथ) है।
ars

मैंने वो नहीं देखा था। लिंक के लिए धन्यवाद। वह प्रवेश की कीमत के लायक था। :)
जद लॉन्ग

मैंने थोड़ा उपयोगिता फ़ंक्शन बनाया है जो इस सुझाव को एन्कोड करता है। देखें tellMeAboutThis.r
eludom

65
str(x)

यह आपको 99% मामलों में याद रखने की आवश्यकता है।


2
str(x, max.level=1)उपयोगी हो सकता है अगर x बहुस्तरीय ggplot है!
पैट्रिक टीटी

7
str (UCTURE) को याद रखना मुश्किल है, क्योंकि मैं "स्ट्रिंग" सोचता रहता हूं, लेकिन ओह, इतना उपयोगी है। बस दस बार कहना पड़ेगा।
दिमित्री

13

अगर मुझे 'someObject' मिलता है, तो कहिए

someObject <- myMagicFunction(...)

तब मैं आमतौर पर आगे बढ़ता हूं

class(someObject)
str(someObject)

जो आपके द्वारा लिए गए वर्ग के आधार पर, सिर (), सारांश (), प्रिंट (), ... के बाद हो सकता है।


बस प्रयास किया (obj)। एक स्ट्रिंग प्रतिनिधित्व से मुझे उम्मीद से ज्यादा रास्ता; बहुत साफ़! धन्यवाद।
ars

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