¿Cuál es la diferencia entre "matriz grande" y matriz numérica regular?


8

Cuando se crea una matriz relativamente grande, Rstudio la marca como una matriz grande en la ventana de su entorno:

 x <- matrix(rnorm(10000 * 5000), ncol=5000)
 # Large matrix (50000000 elements, 381.5 Mb)

La función mode () como se espera devuelve "numérico" para este objeto:

mode(x)
## [1] "numeric"

Sin embargo, si ejecuto el siguiente comando:

mode(x) <- "numeric"

Rstudio cambia "Matriz grande" en una matriz numérica regular:

# x:  num [1:10000, 1:5000]

Entonces, ¿cuál es la diferencia entre estos 2 objetos? ¿Existe esta diferencia solo en Rstudio o estos dos objetos también son diferentes en R?

Respuestas:


1

En mi opinión, "matriz grande" y matrixes el mismo objeto matriz. Lo que importa es cómo se muestran estos objetos en el entorno global en RStudio.

RStudio también distingue entre vectores y vectores grandes. Considere el siguiente vector:

n <- 256
v1 <- rnorm(n*n-5)

Este vector aparece como un vector grande. Ahora, disminuyamos su tamaño en uno:

v2 <- rnorm(n*n-6)

De repente, se convierte en un vector normal. La estructura de ambos objetos es la misma (que se puede verificar ejecutando str). También lo es su clase y modo de almacenamiento. ¿Qué es diferente entonces? Tenga en cuenta que el tamaño de la v2memoria es exactamente 512 Kb.

lobstr::obj_size(v2)
>524,288 B # or exactly 512 kB

El tamaño de v1es ligeramente mayor:

lobstr::obj_size(v1)
>524,296 B # or 512.0078125 KB

Hasta donde yo entiendo (corríjame si me equivoco), por simple conveniencia, RStudio muestra los objetos que son mayores a 512 kB de manera diferente.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.