[R-es] Cannot allocate a vector of size...

Xavier-Andoni Tibau Alberdi x@v|t|b@u @end|ng |rom gm@||@com
Lun Feb 10 17:18:00 CET 2020


Me temo que no tengo demasiada experiencia en trabajar con sparse matrix en
R. Definitivamente cuando haces 'as.matrix(x)' estas convirtiendo x en una
matriz normal, no sparse. He visto que existe el paquete slam para trabajar
con ellas (documentación
<https://www.rdocumentation.org/packages/slam/versions/0.1-47>). Deberías
ver si las opciones del paquete te permiten hacer lo que quieres.

Faltaría más información de que haces luego con la matriz, para poder saber
si es posible dividir-la. Te pongo un ejemplo, si quieres calcular el valor
promedio de las columnas, puedes dividir la matriz en dos, calcularlos por
separado y luego juntar los resultados. Pero si tu matriz sirve para hacer
una regresión lineal, no puedes, puesto que necesitas la inversa de la
matriz y no se puede calcular a partir de dos mitades.

A ver si con el paquete slam puedes continuar, sino deberías compartir que
haces luego con la matriz para que podamos intentar aconsejarte.

Saludos,

Xavier Tibau

Missatge de l'adreça <miriam.alzate using unavarra.es> del dia dl., 10 de febr.
2020 a les 16:56:

> Muchas gracias Xabier.
>
> He intentaddo trabajar con la sparse matrix pero al pasar tdm a matriz me
> dice también que "cannot allocate a vector of size 12 gb".
> He hecho tdm<-as.matrix(tdm)
>
> ¿Está bien hecho eso para trabajar con la sparse matrix?
>
> Gracias!
>
> El Lun, 10 de Febrero de 2020, 16:15, Xavier-Andoni Tibau Alberdi escribió:
> > La respuesta de Carlos creo que es mucho mas acertada que la mía. Cuando
> > trabajas con una matriz mayoritariamente con 0s, puedes representar-la en
> > forma de sparse matrix, y ocupa mucho menos espacio porque no guardas
> > todos
> > los valores, sino aquellos distintos de 0 y su posición.
> >
> > Estas construyendo la matriz sparse con esto:
> >  tdm<-TermDocumentMatrix(corpus,control=list(weighting =weightTf))
> >
> > puedes ver aquí
> > <
> https://www.rdocumentation.org/packages/tm/versions/0.7-7/topics/TermDocumentMatrix
> >
> > la documentación.
> >
> > Al hacer esto, conviertes la matrz sparse a matriz normal y pones en
> > memoria todos los 0s, que ahora ocupan espacio en la memoria volátil
> (RAM)
> > de tu ordenador.
> > tdm.reviews.m<-as.matrix(tdm)
> >
> > Estamos hablando de memoria RAM, no del disco duro de tu ordenador.
> >
> > Entiendo que tal y como sugiere Carlos, (1) lo mejor es que antes de
> pasar
> > de sparse matrix a matriz normal, consideres en reducir la cantidad de
> > columnas (o filas) de tu matriz. Imagino que es una matriz con
> frecuencias
> > de palabras, a lo mejor puedes eliminar aquellas columnas que representen
> > términos muy poco usados. O (2) sigas usando la sparse matrix para tu
> > analisis.
> >
> > Espero que se entienda y te sirva de ayuda,
> >
> > Saludos,
> >
> > Xavier Tibau
> >
> >
> >
> > Missatge de l'adreça <miriam.alzate using unavarra.es> del dia dl., 10 de
> febr.
> > 2020 a les 16:05:
> >
> >> Buenas,
> >> El archivo de R ocupa 33 megas. La matriz que quiero construir cupa 14
> >> gb.
> >> En el disco local (C) tengo 400 gb disponibles de 670.
> >> No estoy muy puesta en trabajar con este tipo de datos. ¿Qué diferencia
> >> es
> >> trabajar con data.frame?
> >>
> >> Gracias!
> >>
> >> El Vie, 7 de Febrero de 2020, 18:07, Xavier-Andoni Tibau Alberdi
> >> escribió:
> >> > Depende de la operació que quieras hacer con la matriz. Si quitas
> >> filas y
> >> > columnas en algun momento, quiza lo puedes hacer por bloques y luego
> >> la
> >> > juntas.  O quizá puedes cargarlo directamente como data.frame? Quanta
> >> RAM
> >> > tienes? Cuanto pésan los datos?
> >> >
> >> >
> >> >
> >> >
> >> >
> >> > El vie., 7 feb. 2020 18:04, <miriam.alzate using unavarra.es> escribió:
> >> >
> >> >> Es la primera vez que trabajo con este tipo de datos...No se si se
> >> puede
> >> >> dividir esa matriz. ¿Cómo lo podría hacer?
> >> >>
> >> >> Muchas gracias!
> >> >> El Vie, 7 de Febrero de 2020, 17:55, Xavier-Andoni Tibau Alberdi
> >> >> escribió:
> >> >> > Significa que tus datos són muy grandes y no se pueden guardar en
> >> la
> >> >> RAM.
> >> >> > Tienes alternativas para dividir la matriz?
> >> >> >
> >> >> > El vie., 7 feb. 2020 17:26, <miriam.alzate using unavarra.es> escribió:
> >> >> >
> >> >> >> Buenas tardes,
> >> >> >>
> >> >> >> Estoy haciendo un análisis de contenido con el paquete tm. A la
> >> hora
> >> >> de
> >> >> >> ejecutar este código:
> >> >> >>  tdm<-TermDocumentMatrix(corpus,control=list(weighting =weightTf))
> >> >> >>  tdm.reviews.m<-as.matrix(tdm)
> >> >> >>
> >> >> >> La primera línea sí me la ejecuta bien pero en la segunda tengo
> >> este
> >> >> >> error:
> >> >> >> Error: cannot allocate vector of size 14.0 Gb
> >> >> >>
> >> >> >> ¿Cómo puedo corregirlo? Estoy usando la versión de 64bits de R.
> >> >> >>
> >> >> >> Un saludo
> >> >> >>
> >> >> >> Miriam
> >> >> >>
> >> >> >> _______________________________________________
> >> >> >> R-help-es mailing list
> >> >> >> R-help-es using r-project.org
> >> >> >> https://stat.ethz.ch/mailman/listinfo/r-help-es
> >> >> >>
> >> >> >
> >> >>
> >> >>
> >> >>
> >> >
> >>
> >>
> >>
> >
>
>
>

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es