การระบุวัตถุ R


120

ฉันมักจะจบลงด้วยฟังก์ชันที่สร้างเอาต์พุตซึ่งฉันไม่เข้าใจประเภทข้อมูลเอาต์พุต ฉันคาดหวังว่าจะได้รายการและจะกลายเป็นรายการหรือกรอบข้อมูลหรืออย่างอื่น วิธีการหรือขั้นตอนการทำงานที่ดีในการหาชนิดข้อมูลเอาต์พุตเมื่อใช้ฟังก์ชันครั้งแรกเป็นอย่างไร

คำตอบ:


127

ฉันมักจะเริ่มต้นด้วยการรวมกันของ:

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)

..etc

ถ้าobjเป็น S3 หรือ S4 วัตถุคุณยังสามารถลองmethodsหรือshowMethods, showClassฯลฯ แพทริคเบิร์นส์R นรกมีส่วนที่ดีงามเกี่ยวกับเรื่องนี้ (วินาที # 7)

แก้ไข : เดิร์กและแฮดลีย์พูดถึงstr(obj)ในคำตอบของพวกเขา มันดีกว่าข้อใด ๆ ข้างต้นมากสำหรับการมองวัตถุอย่างรวดเร็วและละเอียด


1
ฉันไม่คิดว่าฉันทำมันได้ไกลถึง R Inferno ขอบคุณที่ส่งฉันกลับไปที่นั่น
JD Long

3
ในกรณีที่คุณยังไม่เคยเห็น "วัตถุ S4 ใน 15 หน้าหรือน้อยกว่า" [ stat.auckland.ac.nz/S-Workshop/Gentleman/S4Objects.pdf ] เป็นอีกหนึ่งสิ่งที่น่าอ่าน (พร้อมรายละเอียดเพิ่มเติม)
อา

ฉันไม่เห็นสิ่งนั้น ขอบคุณสำหรับลิงค์ คุ้มค่ากับราคาค่าเข้าชม :)
JD Long

ฉันได้สร้างฟังก์ชันยูทิลิตี้เล็กน้อยที่เข้ารหัสคำแนะนำนี้ ดูtellMeAboutThis.r
eludom

65
str(x)

ทุกอย่างที่คุณต้องจำไว้สำหรับ 99% ของเคส


2
str(x, max.level=1)จะมีประโยชน์ถ้า x เป็น ggplot แบบหลายชั้น!
PatrickT

7
str (UCTURE) ยากที่จะจำเพราะฉันคิดว่า "สตริง" แต่โอ้มีประโยชน์มาก จะต้องพูดโครงสร้างสิบครั้ง
Dmitri

13

ถ้าฉันได้รับ 'someObject' ให้พูดผ่าน

someObject <- myMagicFunction(...)

จากนั้นฉันมักจะดำเนินการต่อโดย

class(someObject)
str(someObject)

ซึ่งสามารถตามด้วย head (), summary (), print (), ... ขึ้นอยู่กับคลาสที่คุณมี


เพิ่งลอง str (obj) มากกว่าที่ฉันคาดไว้จากการแสดงสตริง เรียบร้อยมาก! ขอบคุณ
อา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.