[R-es] Almacenamiento de informaci�n (matriz en matriz) e iteradores
Carlos J. Gil Bellosta
cgb en datanalytics.com
Mie Feb 20 20:06:26 CET 2013
Hola, �qu� tal?
Creo que te bastar�a con una tabla (un dataframe est�ndar) para
almacenar tu informaci�n. No necesitas llenar tu espacio de trabajo de
objetos inconexos (matrices independientes).
Luego, las funciones ddply y similares del paquete plyr te servir�an
para procesar la informaci�n por, p.e., parada de manera muy limpia.
Un saludo,
Carlos J. Gil Bellosta
http://www.datanalytics.com
El d�a 20 de febrero de 2013 05:20, Alejandro Ayala
<alejo.ayalab en gmail.com> escribi�:
> Saludos, me encuentro realizando una simulaci�n de una red de transporte
> (paradas, l�neas de frecuencia, usuarios, etc), para lo cual necesito el
> almacenamiento de informaci�n de forma matricial.
>
> El sistema cuenta con un numero determinado de paradas (38 paradas), en
> donde cada parada representa una matriz la cual tiene asociada la llegada
> de pasajeros, el tiempo en el cual llegaron, el d�stino y otros atributos
> m�s, mi pregunta es que si existe alguna paquete o forma de almacenar esta
> informaci�n a manera de una "super matriz", donde cada componente de una
> matriz simple representa una nueva matriz, algo similar a lo que en f�sica
> se denomina tensor.
>
> Mi otra pregunta radica en como asignar valores mediante iteraci�n a las
> componentes de una matriz de acuerdo al cumplimiento de ciertas
> condiciones, tengo el siguiente c�digo
>
> for (i in 5:23) # creaci�n de 19 matrices nulas con subindices 5 6 7...23
> {
> mat.i<-paste("mat",i,sep="")
> assign(mat.i,matrix(0,32,32))
> data.matrix(mat.i)
> }
>
> # Mediante
> for (i in 1:32){ # iterador para realizar operaciones sobre cada fila de
> la matriz deseada
> isup.i<-paste("isup",i,sep="")
> if ((sum(m_sup5[i,])==0) | (sum(m_sup6[i,])==0) | (sum(m_sup7[i,])==0)){
> # hace referencia a matrices (m_sup5, m_sup6,....) donde algunas filas
> tienen componentes nulas (cero)
> mat5[i,]=0
> mat6[i,]=0
> mat7[i,]=0}
> else {
>
> mat5[i,]<-assign(isup.i,as.vector(m_sup5[i,]/sum(m_sup5[i,]),mode="numeric"))
>
> mat6[i,]<-assign(isup.i,as.vector(m_sup6[i,]/sum(m_sup6[i,]),mode="numeric"))
>
> mat7[i,]<-assign(isup.i,as.vector(m_sup7[i,]/sum(m_sup7[i,]),mode="numeric"))
> }}
>
> El anterior codigo funciona con condiciones de hasta 3 matrices 5, 6 y 7 a
> partir de 8 me arroja un error. Como podr�a reemplazar este c�digo mediante
> otro iterador que me reconozca el sub�ndice de la matriz que estoy
> trabajando y adicionalmente me realice la operaci�n deseada sobre cada
> componente de la fila de la matriz trabajada en ese momento.
>
> Necesito un c�digo similar a:
>
> for (j in 5:23){
> for (i in 1:32){
> isup.i<-paste("isup",i,sep="")
> if ((sum(m_supj[i,]==0)) # utilizando el sub�ndice "j" que reemplace a las
> matrices de 5 a 23
> else
> {
> matj[i,]<-assign(isup.i,as.vector(m_supj[i,]/sum(m_supj[i,]),mode="numeric"))
> }
> }}
>
> Los errores que me arroja son de tipo que no existe relaci�n al objeto que
> se quiere almacenar, incoherencia en las dimensiones, la funci�n assign()
> no asigna valores adecuados,etc, lo he intendado todo lo que se me a
> ocurrido sin ningun resultado favorable, algun comentario o ayuda??
>
> Muchas gracias por su respuesta
>
> [[alternative HTML version deleted]]
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
M�s informaci�n sobre la lista de distribuci�n R-help-es