R no puede asignar el vector de tamaño

Sheeraz Gul 21 junio 2023
  1. R no puede asignar el vector de tamaño
  2. Solución 1: Recolección de basura usando gc()
  3. Solución 2: aumentar el límite de memoria
R no puede asignar el vector de tamaño

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.

    Propiedades R

  • Una vez entres en las Propiedades, ve a la pestaña Acceso directo y busca el campo Objetivo.

    Campo objetivo de propiedades R

  • Agregue la siguiente línea al final del campo de destino.
    --max-mem-size=45000M--max-vsize=45000M
    

    Propiedades R Aumentar memoria

  • La línea anterior aumentará la memoria a 45000 MB, que es superior a 37,3 GB. El vsize 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 Gul avatar Sheeraz Gul avatar

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

Artículo relacionado - R Error