varias superponer studio lineas histogramas graficos graficas r class object integer numeric

studio - superponer graficas en r



Cuál es la diferencia entre la clase entera y la clase numérica en R (2)

En primer lugar, es perfectamente factible usar R con éxito durante años y no necesita saber la respuesta a esta pregunta. R maneja las diferencias entre los números (usuales) y los enteros para usted en el fondo.

> is.numeric(1) [1] TRUE > is.integer(1) [1] FALSE > is.numeric(1L) [1] TRUE > is.integer(1L) [1] TRUE

(Poner ''L'' mayúscula después de un entero lo fuerza a almacenarse como un entero.)

Como puede ver, "entero" es un subconjunto de "numérico".

> .Machine$integer.max [1] 2147483647 > .Machine$double.xmax [1] 1.797693e+308

Los números enteros solo llegan a un poco más de 2 mil millones, mientras que los otros números pueden ser mucho más grandes. Pueden ser más grandes porque están almacenados como números de punto flotante de doble precisión. Esto significa que el número se almacena en dos partes: el exponente (como 308 arriba, excepto en la base 2 en lugar de la base 10), y el "significando" (como 1.797693 arriba).

Tenga en cuenta que ''is.integer'' no es una prueba de si tiene un número entero, sino una prueba de cómo se almacenan los datos.

Una cosa a tener en cuenta es que el operador de dos puntos, : , devolverá números enteros si los puntos de inicio y final son números enteros. Por ejemplo, 1:5 crea un vector integer de números del 1 al 5. No necesita agregar la letra L

> class(1:5) [1] "integer"

Referencia: https://www.quora.com/What-is-the-difference-between-numeric-and-integer-in-R

Quiero adelantar esto diciendo que soy un principiante absoluto de programación, así que disculpen cuán básica es esta pregunta.

Estoy tratando de obtener una mejor comprensión de las clases "atómicas" en R y tal vez esto se aplica a las clases de programación en general. Entiendo la diferencia entre un carácter, lógico y clases de datos complejos, pero estoy luchando para encontrar la diferencia fundamental entre una clase numérica y una clase entera.

Digamos que tengo un vector simple x <- c(4, 5, 6, 6) de enteros, tendría sentido que fuera una clase entera. Pero cuando hago class(x) obtengo [1] "numeric" . Entonces si convierto este vector a una clase entera x <- as.integer(x) . Devuelve la misma lista exacta de números, excepto que la clase es diferente.

Mi pregunta es por qué es este el caso, y por qué la clase predeterminada para un conjunto de enteros es una clase numérica, y cuáles son las ventajas o desventajas de tener un entero configurado como numérico en lugar de entero.


Hay varias clases que se agrupan juntas como clases "numéricas", las 2 más comunes son dobles (para números de coma flotante de precisión doble) y entero. R convertirá automáticamente entre las clases numéricas cuando sea necesario, por lo que en su mayor parte no le importa al usuario casual si el número 3 se almacena actualmente como un número entero o como un doble. La mayoría de las matemáticas se realizan con doble precisión, por lo que a menudo es el almacenamiento predeterminado.

A veces es posible que desee almacenar un vector como enteros específicamente si sabe que nunca se convertirán en dobles (utilizados como valores de identificación o indexación), ya que los enteros requieren menos espacio de almacenamiento. Pero si se van a utilizar en cualquier matemática que los convierta en el doble, entonces será más rápido simplemente almacenarlos como dobles para empezar.