web-dev-qa-db-fra.com

Différence entre "données" et "valeurs" dans R

Je suis récemment passé de STATA à R. J'utilise RSTudio comme IDE. J'ai trouvé que certaines de mes variables vont dans la section "Données" de RStudio et d'autres dans "Valeurs". Ce sont dans la fenêtre "Environnement". J'ai fait une petite recherche sur Google et j'ai trouvé qu'il y avait un concept majeur dans R qui me manquait. Quelle est la différence entre "Données" et "Valeurs"? Ce serait génial si quelqu'un pouvait publier un exemple quand une variable ira dans la section Données et quand elle ira dans la section Valeurs.

Voici le lien auquel je fais référence: https://support.rstudio.com/hc/en-us/community/posts/202201648-What-is-the-difference-between-Data-and-Values- dans le volet Environnement -

J'apprécierais toutes les pensées.

19
watchtower

Vous ne manquez pas un "concept majeur en R". Ce qui vous manque, c'est que RStudio a choisi pour des raisons qui lui sont propres (pensant qu'il aidait sans aucun doute les utilisateurs) de séparer les trames de données des autres objets tels que les listes sans la classe "data.frame". Il n'y a pas de classe "Données" ou "Valeurs" dans R et vous ne trouverez pas cette distinction dans les manuels R. C'est RStudio au travail et ne fait pas partie de R. Alors que je lis la réponse de Jonathon à la question citée, je suppose que la décision est basée sur la question de savoir si l'objet R a un attribut de dimension car il dit que les matrices et le cadre seraient également répertoriés dans "Valeurs". Je pense qu'un libellé plus précis serait "Objets dimensionnés" et "Objets non dimensionnés et non linguistiques". J'ai été un peu surpris que les listes soient affichées mais pas les vecteurs atomiques (contrairement à Jonathon). Peut-être qu'il y a un commutateur qui peut être lancé quelque part pour afficher les noms des vecteurs atomiques dans ce panneau?

Cela va dans la section Données:

dat <- data.frame(a=1:10, b=letters[1:10])

Et cela le déplacerait dans la section Valeurs:

dat <- unclass(dat)

Je dois admettre qu'il y a eu des moments où j'ai voulu ces informations et (éventuellement) les ai obtenues en exécutant quelque chose comme ceci:

> ls()[ lapply( mget( ls() ) , class) == "data.frame" ]
[1] "air1"   "air2"   "dat"    "df"     "dfCord" "fsub"   "mtcars" "test"  
13
42-

C'est purement une différence dans RStudio. Les objets "données" sont des objets S4, des environnements et des objets avec des dimensions. Il y en a peut-être plus, ce sont les rares que j'ai trouvés jusqu'à présent. Les objets 'Value' sont des objets qui ne sont ni des fonctions ni des objets 'Data'.

Edit: Après une inspection plus approfondie, il semble que les "valeurs" dans RStudio soient des objets atomiques de moins de 2 dimensions. J'espère que ça aide.

1
Andrew