Deux questions R:
- Quelle est la différence entre le type (renvoyé par
typeof
) et la classe (renvoyée parclass
) d'une variable? La différence est-elle similaire à celle, par exemple, du langage C ++? - Quels sont les types et classes de variables possibles?
Réponses:
Dans R, chaque "objet" a un
mode
et unclass
. Le premier représente la façon dont un objet est stocké en mémoire (numérique, caractère, liste et fonction) tandis que le second représente son type abstrait. Par exemple:d <- data.frame(V1=c(1,2)) class(d) # [1] "data.frame" mode(d) # [1] "list" typeof(d) # list
Comme vous pouvez le voir, les trames de données sont stockées en mémoire
list
mais elles sont enveloppées dans desdata.frame
objets. Ce dernier permet l'utilisation des fonctions membres ainsi que la surcharge des fonctions commeprint
avec un comportement personnalisé.typeof
(storage.mode
) donnera généralement les mêmes informations quemode
mais pas toujours. Exemple concret:typeof(c(1,2)) # [1] "double" mode(c(1,2)) # [1] "numeric"
Le raisonnement derrière cela peut être trouvé ici :
Le lien que j'ai posté ci-dessus contient également une liste de tous les R natifs
basic types
(vecteurs, listes, etc.) et de touscompound objects
(facteurs et data.frames) ainsi que quelques exemples de commentmode
,typeof
etclass
sont liés pour chaque type.la source
oldClass(matrix(1:10, 2,5)) # NULL
type
fait vraiment référence aux différentes structures de données disponibles dans R. Cette discussion du manuel de définition du langage R peut vous aider à démarrer sur les objets et les types.D'autre part,
class
signifie autre chose dans R que ce à quoi vous pouvez vous attendre. À partir du manuel de définition du langage R (fourni avec votre version de R):la source