R no puede asignar el vector de tamaño
- R no puede asignar el vector de tamaño
-
Solución 1: Recolección de basura usando
gc()
- Solución 2: aumentar el límite de memoria
Este tutorial demuestra el error r no puede asignar el vector de tamaño
.
R no puede asignar el vector de tamaño
El error no se puede asignar el vector de tamaño
ocurre en R cuando estamos tratando de manejar una gran cantidad de datos. Este error no es un error de sintaxis sino uno lógico que ocurre cuando se trata de una cantidad extremadamente grande de datos porque utiliza una gran cantidad de memoria virtual.
La mayoría de las veces, este error ocurre cuando los datos se cargan desde una fuente externa como un paquete o cualquier otro archivo. Cuando el compilador no puede controlar el tamaño del objeto, arrojará el error no se puede asignar el vector de tamaño
.
El error cannot allocate vector of size
ocurre cuando creamos un vector del objeto o cargamos una función. Este error también puede ocurrir con objetos más pequeños cuando tenemos muchos objetos más pequeños.
El error tiene dos soluciones, gc()
y memory.limit()
, donde gc()
no funciona en todas las situaciones. Demostramos ambos métodos en este tutorial.
Solución 1: Recolección de basura usando gc()
La recolección de basura es la primera solución que viene a la mente; hay un error no se puede asignar el vector de tamaño
, y funciona en muchas situaciones. Pero el GC no funcionará cuando la cantidad de datos sea mucho mayor.
El método gc()
se usa para la recolección de basura en R. Probemos un ejemplo que arroja este error y luego intentemos resolverlo con gc()
.
demo <- rnorm(5000000000)
El código anterior creará un vector a partir de valores distribuidos aleatoriamente y, según nuestro sistema, debería arrojar el error no se puede asignar el vector de tamaño
. Ver la salida:
Error: cannot allocate vector of size 37.3 Gb
In addition: Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, :
there is no package called 'Matrix'
Como podemos ver, el compilador requiere la memoria del error: cannot allocate vector of size 37.3 Gb
, lo cual no es posible para nuestro sistema. No intentemos ejecutar GC y luego este código nuevamente.
# Run GC
gc()
# Run the above code
demo <- rnorm(5000000000)
El código anterior realizará el GC y luego intentará volver a ejecutar el código; si después de GC, hay una memoria de 37.3
GB, entonces el error se resolverá; de lo contrario, seguirá arrojando el error. Ver la salida:
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 1004541 53.7 2078938 111.1 1255027 67.1
Vcells 2577662 19.7 8388608 64.0 2836345 21.7
Error: cannot allocate vector of size 37.3 Gb
Como podemos ver, todavía arroja el mismo error porque el GC está borrando una pequeña cantidad de memoria, que necesita más. Entonces, el gc()
solo funciona para situaciones pequeñas.
Solución 2: aumentar el límite de memoria
Hace algún tiempo, pudimos aumentar el límite de memoria en R usando el memory.limit()
con el atributo size
, resolviendo el error cannot allocate vector of size
incluso en una situación de gran cantidad de datos. Pero este método ya no es compatible con R y, según la documentación de R, podemos aumentar la memoria desde la opción del sistema operativo.
Siga el proceso paso a paso para aumentar la memoria que resolverá el error no se puede asignar el vector de tamaño
.
-
En primer lugar, asegúrese de que RStudio esté cerrado.
-
Ahora busque el acceso directo del programa R y haga clic derecho sobre él para ir a
Propiedades
. -
Una vez entres en las
Propiedades
, ve a la pestañaAcceso directo
y busca el campoObjetivo
. -
Agregue la siguiente línea al final del campo de destino.
--max-mem-size=45000M--max-vsize=45000M
-
La línea anterior aumentará la memoria a
45000
MB, que es superior a 37,3 GB. Elvsize
en la línea anterior identifica el tamaño del vector. -
Después de configurar la memoria máxima y el tamaño máximo del vector, abra RStudio y ejecute el siguiente código:
demo <- rnorm(5000000000)
Ahora, este código lanzará y creará un vector llamado demo
. El tamaño de 37,3 GB es demasiado grande; podría colgar su computadora si no puede soportar la memoria.
Pero siempre que ocurra el error no se puede asignar el vector de tamaño
, podemos usar este método para resolverlo.
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook