web-dev-qa-db-fra.com

Identification d'objet R

Je finis souvent avec une fonction produisant une sortie pour laquelle je ne comprends pas le type de données de sortie. J'attends une liste et cela finit par être une liste de listes, un bloc de données ou autre chose. Quelle est la bonne méthode ou flux de travail pour déterminer le type de données en sortie lors de la première utilisation d’une fonction?

113
JD Long

Je commence habituellement avec une combinaison de:

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

selon les cas, en fonction de ce qui a été révélé. Par exemple, essayez avec:

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.

Si obj est un objet S3 ou S4, vous pouvez également essayer methods ou showMethods, showClass, etc. Patrick Burns ' R Inferno a une très bonne section à ce sujet (sec # 7).

[~ # ~] éditer [~ # ~] : Dirk et Hadley mentionnent str(obj) dans leurs réponses. C'est vraiment beaucoup mieux que tout ce qui précède pour un coup d'oeil rapide et même détaillé dans un objet.

120
ars
str(x)

C'est tout ce dont vous avez besoin de vous souvenir dans 99% des cas.

59
hadley

Si je reçois 'someObject', disons via

someObject <- myMagicFunction(...)

alors je procède habituellement par

class(someObject)
str(someObject)

qui peut être suivi de head (), summary (), print (), ... en fonction de la classe que vous avez.

12
Dirk Eddelbuettel
attributes(someObject) 

Peut aussi être utile

7
Josh Reich