Types et classes de variables

Deux questions R:

  1. Quelle est la différence entre le type (renvoyé par typeof ) et la classe (renvoyée par la class ) d’une variable? La différence est-elle similaire à celle, disons, du langage C ++?
  2. Quels sont les types et classes de variables possibles?

En R, chaque “object” a un mode et une class . Le premier représente la manière dont un object est stocké en mémoire (numérique, caractère, liste et fonction) tandis que le dernier 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 data.frame données sont stockés en mémoire sous forme de list mais ils sont enveloppés dans des objects data.frame . Ce dernier permet l'utilisation des fonctions membres ainsi que des fonctions de surcharge telles que l' print avec un comportement personnalisé.

typeof ( typeof ) donnera généralement les mêmes informations que le mode mais pas toujours. Par exemple:

 typeof(c(1,2)) # [1] "double" mode(c(1,2)) # [1] "numeric" 

Le raisonnement derrière cela peut être trouvé ici :

Le type de fonction spécifique R renvoie le type d'un object R

Le mode fonction donne des informations sur le mode d'un object au sens de Becker, Chambers & Wilks (1988) et est plus compatible avec les autres implémentations du langage S

Le lien que j'ai posté ci-dessus contient également une liste de tous basic types R natifs (vecteurs, listes, etc.) et tous compound objects (facteurs et data.frames) ainsi que des exemples de typeof mode , typeof et class . type.

type fait vraiment référence aux différentes structures de données disponibles dans R. Cette discussion dans le manuel de définition du langage R peut vous permettre de démarrer sur des objects et des types.

D’autre part, class signifie quelque chose d’autre dans R que ce à quoi vous pouvez vous attendre. A partir du manuel de définition du langage R (fourni avec votre version de R):

2.2.4 Classes

R possède un système de classe élaboré 1 , principalement contrôlé par l’atsortingbut class. Cet atsortingbut est un vecteur de caractères contenant la liste des classes dont un object hérite. Ceci constitue la base de la fonctionnalité «méthodes génériques» dans R.

Cet atsortingbut peut être accédé et manipulé virtuellement sans ressortingction par les utilisateurs. Il n’est pas vérifié qu’un object contient réellement les composants attendus par les méthodes de classe. Par conséquent, la modification de l’atsortingbut de classe doit être effectuée avec précaution et, lorsqu’elles sont disponibles, des fonctions de création et de coercition spécifiques doivent être préférées.