Quelle est la différence entre la classe integer et numérique de la classe dans la R
Je veux commencer par dire que je suis un absolu de programmation débutant, s'il vous plaît excuser de base à cette question est.
Je vais essayer d'obtenir une meilleure compréhension de "atomique" classes R et peut-être ce qui se passe pour les cours de programmation en général. Je comprends la différence entre un personnage, logique, et le complexe de classes de données, mais j'ai du mal à trouver la différence fondamentale entre un numérique de classe et une classe integer.
Disons que j'ai un simple vecteur x <- c(4, 5, 6, 6)
d'entiers, il serait logique que ce soit une classe integer. Mais quand je fais class(x)
- je obtenir [1] "numeric"
. Alors si je convertir ce vecteur à une classe integer x <- as.integer(x)
. C'retour, exactement le même numéro de la liste, à l'exception de la classe est différente.
Ma question est: pourquoi est-ce le cas, et pourquoi la classe par défaut pour un ensemble d'entiers est un numérique de classe, et quels sont les avantages et les inconvénients d'avoir un ensemble d'entiers comme le numérique au lieu d'un entier.
- Ne
as.integer(c(4.1, 5.2, 6.3, 6.4))
vous aider à comprendre la différence? Vous devez comprendre que la représentation interne et ce qui est imprimé ne sont pas du tout la même chose. De toute façon, faire un peu de lecture sur les types de données dans les langages informatiques. - Dans la "Relative" de la colonne de droite est à cette question: stackoverflow.com/questions/8804779/...
- Essayez
x <- 1; is.integer(x); is.numeric(x)
, puisx <- 1L; is.integer(x); is.numeric(x)
et vous pouvez être en mesure de voir un peu de la différence. Entier classes sont utilisées pour transmettre des variables à partir de C et des constructions en R structures. Cependant, il y a beaucoup plus de cela. - Je ne pense pas que les classes de la spécification de précision. Je suis habitué à flotteur à l'aide de méthodes pour manipuler des entiers classes. Cela a du sens.
Vous devez vous connecter pour publier un commentaire.
Il y a plusieurs classes sont regroupées en "numérique" des classes, le 2 plus communes qui sont en double (pour la double précision des nombres à virgule flottante) et integer. R convertira automatiquement entre le numérique classes lorsque cela est nécessaire, donc, pour la plupart, il n'est pas question pour l'utilisateur occasionnel si le nombre 3 est actuellement stocké sous forme d'un entier ou d'un lit double. Plus de maths se fait à l'aide de la double précision, ce qui est souvent le défaut de stockage.
Parfois, vous pouvez spécifiquement stocker un vecteur d'entiers si vous savez qu'ils ne pourront jamais être converti en double (utilisés comme valeurs d'ID ou de l'indexation) depuis entiers nécessitent moins d'espace de stockage. Mais si ils vont être utilisés dans tous les calculs qui va les convertir en double, alors il sera probablement plus rapide de simplement les stocker en tant que double pour commencer.
Tout d'abord, il est parfaitement possible d'utiliser R avec succès depuis des années et pas besoin de connaître la réponse à cette question. R gère les différences entre l' (d'habitude) des nombres et les nombres entiers pour vous dans le fond.
(Mettre de la capitale " L " après un entier, ce qui le force à être considéré comme un entier.)
Comme vous pouvez le voir "entier" est un sous-ensemble de "numérique".
Entiers seulement aller à un peu plus de 2 milliards de dollars, tandis que les autres objets numériques peuvent être beaucoup plus grands. Ils peuvent être plus grands, car ils sont stockés en tant que double de la précision des nombres à virgule flottante. Cela signifie que le nombre est stocké dans deux pièces: l'exposant (comme la 308 ci-dessus, sauf en base 2 plutôt qu'en base 10), et le "significande" (comme 1.797693 ci-dessus).
Noter que 'est.integer' n'est pas un test pour savoir si vous avez un nombre entier, mais un test de la façon dont sont stockées les données.
Une chose à surveiller est que le côlon de l'opérateur,
:
, sera de retour entiers si le début et la fin sont des nombres entiers. Par exemple,1:5
crée uninteger
vecteur de nombres de 1 à 5. Vous n'avez pas besoin d'ajouter la lettreL
.Référence: https://www.quora.com/What-is-the-difference-between-numeric-and-integer-in-R
À ma connaissance - nous de ne pas déclarer une variable avec un type de données par défaut R a fixé un nombre quelconque sans L'être numérique.
Si vous avez écrit:
Exemple de l'Entier:
Exemple de Numérique (un genre de double/à flotteur à partir d'autres langages de programmation)