2009-07-24 13 views
97

Często kończę na funkcji wytwarzającej dane wyjściowe, dla której nie rozumiem typu danych wyjściowych. Spodziewam się listy, która kończy się listą list lub ramką danych lub czymś innym. Jaka jest dobra metoda lub przepływ pracy do określenia wyjściowego typu danych przy pierwszym użyciu funkcji?Identyfikacja obiektów R

Odpowiedz

107

ja zwykle zaczynają się z pewnej kombinacji:

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

jako właściwy w oparciu o to, co objawił. Na przykład spróbuj z:

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.

Jeśli obj jest obiektem S3 lub S4, można także spróbować methods lub showMethods, showClass itp Patrick Burns' R Inferno ma całkiem dobry rozdział o tym sek (7 #).

EDYCJA: Dirk i Hadley wspominają w swoich odpowiedziach o str(obj). To naprawdę jest o wiele lepsze niż jakikolwiek z powyższych dla szybkiego i szczegółowego podglądania obiektu.

+1

Nie sądzę, że dotarłem tak daleko przez R Inferno. Dziękuję za wysłanie mnie tam z powrotem. –

+2

Jeśli jeszcze go nie widziałeś, "Obiekty S4 na 15 stronach lub mniej" [http://www.stat.auckland.ac.nz/S-Workshop/Gentleman/S4Objects.pdf] to kolejny dobry odczyt (z większą ilością szczegółów). – ars

+0

Nie widziałem tego. Dzięki za link. To było warte ceny wstępu. :) –

10

Jeśli dostanę 'SomeObject', powiedzieć poprzez

someObject <- myMagicFunction(...) 

wtedy zazwyczaj przejść przez

class(someObject) 
str(someObject) 

, które mogą być następnie przez głowę() Podsumowanie(), print(). .. w zależności od klasy, którą posiadasz.

+0

Po prostu próbowałem str (obj). O wiele więcej, niż oczekiwałem od reprezentacji smyczków; bardzo schludny! Dzięki. – ars

6
attributes(someObject) 

Może być również przydatna

47
str(x) 

To wszystko, co należy pamiętać w 99% przypadków.

+0

jest idealny. bardzo dziękuję – ManojGumber

+1

'' str (x, max.level = 1) '' może być przydatne, jeśli x jest wielowarstwowym ggplotem! – PatrickT

+3

str (UCTURE) trudno zapamiętać, ponieważ ciągle myślę "ciąg", ale o, tak przydatne. Wystarczy powiedzieć STRUCTURE dziesięć razy. – Dmitri