2009-07-24 41 views
97

Tôi thường kết thúc bằng chức năng tạo đầu ra mà tôi không hiểu loại dữ liệu đầu ra. Tôi đang mong đợi một danh sách và nó kết thúc là một danh sách các danh sách hoặc một khung dữ liệu hoặc một cái gì đó khác. Một phương pháp hay quy trình làm việc tốt để tìm ra kiểu dữ liệu đầu ra là gì khi lần đầu tiên sử dụng một hàm?Nhận dạng đối tượng R

Trả lời

107

Tôi thường bắt đầu với một số sự kết hợp của:

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

phù hợp dựa trên những gì được tiết lộ. Ví dụ: hãy thử với:

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.

Nếu obj là một S3 hoặc S4 đối tượng, bạn cũng có thể thử methods hoặc showMethods, showClass vv Patrick Burns' R Inferno có một phần khá tốt về vấn đề này (giây # 7).

EDIT: Dirk và Hadley đề cập đến str(obj) trong câu trả lời của họ. Nó thực sự là tốt hơn nhiều so với bất kỳ ở trên cho một cái nhìn nhanh chóng và thậm chí chi tiết vào một đối tượng.

+1

tôi không nghĩ rằng tôi đã làm cho nó mà đến nay thông qua R Inferno. Cảm ơn đã gửi tôi trở lại đó. –

+2

Trong trường hợp bạn chưa nhìn thấy nó, "đối tượng S4 trong 15 trang hoặc ít hơn" [http://www.stat.auckland.ac.nz/S-Workshop/Gentleman/S4Objects.pdf] là một bài đọc hay (với nhiều chi tiết hơn). – ars

+0

Tôi không thấy điều đó. Cảm ơn các liên kết. Đó là giá trị của nhập học. :) –

10

Nếu tôi nhận được 'someObject', nói qua

someObject <- myMagicFunction(...) 

sau đó tôi thường tiến hành bằng

class(someObject) 
str(someObject) 

mà có thể được theo sau bởi người đứng đầu(), tóm tắt(), in(),. .. tùy thuộc vào lớp bạn có.

+0

Chỉ cần thử str (obj). Cách nhiều hơn tôi mong đợi từ một đại diện chuỗi; rât gọn gang! Cảm ơn. – ars

6
attributes(someObject) 

Cũng có thể có ích

47
str(x) 

Đó là tất cả những gì bạn cần nhớ cho 99% trường hợp.

+0

hoàn hảo của nó. cảm ơn rất nhiều – ManojGumber

+1

'' str (x, max.level = 1) '' có thể hữu ích nếu x là một ggplot nhiều lớp! – PatrickT

+3

str (UCTURE) khó nhớ, vì tôi cứ nghĩ "chuỗi" nhưng oh, rất hữu ích. Sẽ chỉ phải nói strUCTURE mười lần. – Dmitri

Các vấn đề liên quan