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 elle finit par être une liste de listes ou un cadre de données ou autre chose. Quelle est une bonne méthode ou un bon workflow pour déterminer le type de données de sortie lors de la première utilisation d'une fonction?Identification d'objet R
Répondre
Je commence habituellement avec une combinaison de:
typeof(obj)
class(obj)
sapply(obj, class)
sapply(obj, attributes)
attributes(obj)
names(obj)
selon le cas en fonction de ce qui est 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 S3 ou S4 objet, vous pouvez aussi essayer methods
ou showMethods
, showClass
, etc. Patrick Burns R Inferno a une section assez bonne sur ce (s # 7).
EDIT: 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.
Si je reçois 'someObject', disent par
someObject <- myMagicFunction(...)
puis je procède habituellement par
class(someObject)
str(someObject)
qui peut être suivie par la tête(), résumé(), impression(),. .. selon la classe que vous avez.
Juste essayé str (obj). Bien plus que ce que j'attendais d'une représentation sous forme de chaîne; très propre! Merci. – ars
attributes(someObject)
peut également être utile
str(x)
C'est tout ce dont vous avez besoin de vous souvenir dans 99% des cas.
son parfait. merci beaucoup – ManojGumber
'' str (x, max.level = 1) '' peut être utile si x est un ggplot multicouche! – PatrickT
str (UCTURE) difficile à retenir, parce que je continue à penser "chaîne" mais oh, si utile. Il suffit de dire STRUCTURE dix fois. – Dmitri
Je ne pense pas que je l'ai fait aussi loin à travers R Inferno. Merci de m'avoir renvoyé là-bas. –
Dans le cas où vous ne l'avez pas déjà vu, "S4 objets en 15 pages ou moins" [http://www.stat.auckland.ac.nz/S-Workshop/Gentleman/S4Objects.pdf] est une autre bonne lecture (avec plus de détails). – ars
Je n'avais pas vu ça. Merci pour le lien. Cela valait le prix d'admission. :) –