Tengo un gran marco de datos que toma alrededor de 900 MB de memoria RAM. Luego trató de modificar de esta manera:Sin memoria cuando se modifica un gran R data.frame
dataframe[[17]][37544]=0
Parece que hace R utilizando más de RAM 3G y R se queja: (. Estoy en una máquina de 32 bits) "Error No se puede asignar el vector de tamaño de 3.0 Mb",
he encontrado de esta manera es mejor:
dataframe[37544, 17]=0
pero la huella del R todavía se duplicó y el comando lleva bastante tiempo para funcionar.
De un fondo de C/C++, estoy realmente confundido acerca de este comportamiento. Pensé que algo como dataframe[37544, 17]=0
debería completarse en un abrir y cerrar de ojos sin que costara ninguna memoria extra (solo se debería modificar una celda). ¿Qué está haciendo R para esos comandos que publiqué? ¿Cuál es la forma correcta de modificar algunos elementos en un marco de datos sin duplicar la huella de memoria?
¡Muchas gracias por su ayuda!
Tao
(Base) R es famoso por su espectacular manejo de grandes estructuras de datos. Deberá buscar una combinación de los paquetes ** ff **, ** bigmemory ** y ** data.table **. – joran
Eso no es realmente cierto: los data.frames son famosos por ser ineficientes, pero existen estructuras muy eficientes en (base) R que deberías usar en cambio si te preocupas por la eficiencia. –
@SimonUrbanek Sí, lo expresé muy mal. Simplemente quise decir exactamente lo que dijiste, que los marcos de datos tienden a ser ineficientes, y que los paquetes que mencioné a menudo pueden ser útiles para las personas que manejan grandes cantidades de datos. – joran