[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