[R-es] Almacenamiento de información (matriz en matriz) e iteradores
Marcuzzi, Javier Rubén
javier.ruben.marcuzzi en gmail.com
Mie Feb 20 20:33:43 CET 2013
Estimado Alejandro Ayala
Las respuestas que le brindaron son buenas, de pronto podría ser útil
utilizar el paquete sqldf, que no es otra cosa que un data.frame, o un
data.frame llevado a sqlite3, porque en algunas oportunidades es cómodo
utilizar sql para "trabajar" con datos y R para "calcular". Aunque debo
reconocer que hace un tiempo no utilizo sqldf (la última vez en windows
tenía problemas en las fechas), sin dudas la versión actual es diferente
a la que yo utilicé en aquellos días. No tengo la respuesta a su
inquietud, solo puedo nombrar otra alternativa para almacenar
información.
Javier Marcuzzi
El mar, 19-02-2013 a las 23:20 -0500, Alejandro Ayala escribió:
> Saludos, me encuentro realizando una simulacin de una red de transporte
> (paradas, lneas de frecuencia, usuarios, etc), para lo cual necesito el
> almacenamiento de informacin 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 dstino y otros atributos
> ms, mi pregunta es que si existe alguna paquete o forma de almacenar esta
> informacin a manera de una "super matriz", donde cada componente de una
> matriz simple representa una nueva matriz, algo similar a lo que en fsica
> se denomina tensor.
>
> Mi otra pregunta radica en como asignar valores mediante iteracin a las
> componentes de una matriz de acuerdo al cumplimiento de ciertas
> condiciones, tengo el siguiente cdigo
>
> for (i in 5:23) # creacin 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 podra reemplazar este cdigo mediante
> otro iterador que me reconozca el subndice de la matriz que estoy
> trabajando y adicionalmente me realice la operacin deseada sobre cada
> componente de la fila de la matriz trabajada en ese momento.
>
> Necesito un cdigo 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 subndice "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 relacin al objeto que
> se quiere almacenar, incoherencia en las dimensiones, la funcin 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