7
votes

Quelle est la deuxième colonne de `str` Signaler en r et que signifie« atomic »dans cette colonne?

Utilisation STR (sondage_om) sur ma trame de données indique que toutes mes données numériques sont atomic . Si j'utilise classe (sondage_om $ perc.om) il renvoie numérique .

J'ai toujours pensé que la deuxième colonne de STR a montré la classe des données, mais elle n'apparaît pas aussi simple que mes questions sont:

  1. Quelle est la deuxième colonne de STR signaler?
  2. Qu'est-ce que atomic et comment va-t-il différer de numérique ?
  3. pourquoi dans ce cas, les données apparaissent comme atomic et non num ou int ?

    merci.
    dput (tête (sondage_om, 20)) fournit: xxx

    et la sortie complète de str (arond_om) est : xxx

r

6 commentaires

@Kennypeanuts: concernant (2), je pense que "atomique" est un terme général pour les types de données suivants - caractère, complexe, double, entier et logique.


@Kennyypeanuts: En ce qui concerne (1), si je comprends votre question correctement, vous ne savez pas pourquoi la colonne "Notes" de "My.Data" est affichée comme "facteur". R ne contrainte généralement pas les données dans une correspondance avec les nombres naturels (1, 2, 3, ...) pour réduire l'utilisation de la mémoire. Ces chiffres correspondant aux données d'origine sont appelés «facteurs». Par exemple, si j'ai un vecteur ('A', 'B', 'C', 'A', 'A', 'A', 'A', 'A', 'B', 'B'), r ne voit aucune raison de stocker six cordes, plutôt qu'il crée une correspondance 'A ': 1,' B ': 2,' C ': 3 et stocke le vecteur comme (1,2,3,1,1,2).


@Jubbles, merci pour votre contribution. Ce n'est pas tout à fait ce que je suis confus. Je comprends facteur dans le cas des notes. Ce que je suis incertain, c'est pourquoi les variables numériques (par exemple, perc.om) ont été désignées atomique et non num . Je ne suis toujours pas totalement clair sur ce que atomique est que, comme vous le suggérez, il s'agit d'un type de données général qui inclut numérique. Si j'utilise typeof (my.data $ perc.om), je reçois double (et je ne sais pas comment cela diffère de la classe numérique). Je suppose que j'ai besoin de mieux comprendre les types de données et les classes.


Pouvez-vous inclure l'ensemble de la sortie str () - vous avez au moins coupé le dessus. En outre, certaines ou toutes les données seraient utiles. S'il s'agit d'une trame de données, dput (tête (my.data, 20)) devrait être suffisant pour que nous puissions travailler. Modifier vous q pour inclure cette information s'il vous plaît.


@Gavin Simpson, désolé, j'ai pris si longtemps pour répondre - j'ai ajouté les données que vous suggérez de suggérer serait utile à la question. Merci pour votre aide.


Fait intéressant, Head Bandes les attributs causés au comportement que vous avez vu! str (tête (my.data, 20)) sera l'air que vous attendez!


3 Réponses :


1
votes

Je crois que vos trois questions font essentiellement bouillir jusqu'à une chose.

La deuxième colonne de str () renvoie le mode de l'objet, et non la classe. L'instruction ? Atomique redirige vers ? Vecteur où il stipule: "Les modes atomiques sont" logiques "," entier "," Numeric "(Synonyme" Double " ), "complexe", "caractère" et "cru". "

Ainsi, numérique est l'un des modes de atomic .

mode fait référence au mode de stockage d'un objet. Voir ? MODE Pour plus de détails.


1 commentaires

Mais essayez d'obtenir str () pour sortir atomique au lieu du mode spécifique des données ... Je pense que c'est la poussée du q, comme les commentaires ci-dessus de la Op suggère. Pourquoi indique-t-il atomique et non le mode réel?



2
votes

R divise les types de données en atomique et récursif. Les choses que la plupart des gens appellent que les vecteurs sont tous atomiques (comme mentionné plusieurs personnes à ce jour.) Les listes peuvent avoir des niveaux de complexité arbitraires, c'est-à-dire des listes dans des listes et retourneront false de IS.ATOMIC (). Les vecteurs atomiques peuvent avoir des attributs sans perdre leur "atomicité".


1 commentaires

Oui, mais ne répond pas vraiment à la poussée principale du Q - Pourquoi atomique et non le mode réel? Comment arriver à un tel objet?



8
votes

regarder utils ::: str.default , nous voyons que nous obtenons la sortie habituelle de int , num , etc., etc., Si l'instruction si est true: xxx

Nous obtenons atomic si cette instruction est fausse (et cela aurait autrement été INT , num , etc.).

En regardant la page d'aide pour is.vector , nous voyons qu'il ne renvoie que vrai Si c'est un vecteur sans attributs autres que les noms. Voici un cadre de données où B a un attribut supplémentaire: xxx

et appeler str sur il donne atomique pour b au lieu de int . xxx

je vois dans votre édition sur laquelle vous avez des attributs supplémentaires sur Les éléments de votre cadre de données et que vous obtenez ces lignes supplémentaires sur vos attributs également, il semblerait donc que cela explique cela.


3 commentaires

Merci pour votre contribution sur ma question. Cela aide-moi à comprendre ce qui se passe sous la capuche un peu mieux ... J'ai ajouté les données dput demandées, espérons que cela rendra le problème plus clair.


Merci pour votre réponse. J'ai supprimé les commentaires (c'est-à-dire des attributs supplémentaires) et le mode dans str est retourné aux résultats attendus. Je viens de commencer à ajouter les commentaires, mais je suppose que je vais avoir besoin d'un moyen différent d'annoter mes cadres de données. Merci encore


+1 pour déchiffrer le code str . J'ai vu cette même déclaration, mais n'a pas réussi à faire l'interprétation correcte, comme vous l'avez fait.