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?
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.
str(x)
C'est tout ce dont vous avez besoin de vous souvenir dans 99% des cas.
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.
attributes(someObject)
Peut aussi être utile