[R-es] La ejecución de mi script R es muy lenta

MªLuz Morales mlzmrls en gmail.com
Vie Mayo 29 09:17:10 CEST 2015


Hola Miguel Ángel,
creo que Carlos Ortega me ha dado una solución a mi problema con R...voy a
probarlo... No sabía que había esa limitación en el tamaño del email, lo
tendré en cuenta para la próxima.

Muchas gracias en cualquier caso
Un saludo

MªLuz Morales
Dpto. Ciencias y Tecnología de la comunicación
Universidad Europea de Madrid

El 28 de mayo de 2015, 22:29, <miguel.angel.rodriguez.muinos en sergas.es>
escribió:

> Hola Mª Luz.
>
> Tu primer mensaje no ha llegado a la lista precisamente por el tamaño de
> los ficheros adjuntos. Tienes un correo del administrador al respecto.
> Al haber comentado tú misma ese mensaje, lo hemos podido leer todos pero
> no tenemos acceso al fichero Set-A.zip y al Outcomes.csv. (creo recordar
> que eran unos 9Mb entre los dos)
> Podrías pensar en colgarlos en algún sitio (tipo DropBox o similar) y
> compartir la URL. En caso de que tengas problemas envíame un correo e
> intentaré ayudarte.
>
>
> Un Saludo,
> Miguel Rodríguez
> Consellería de Sanidade
> Xunta de Galicia
> http://dxsp.sergas.es
>
>
> ________________________________________
> De: R-help-es [r-help-es-bounces en r-project.org] en nombre de MªLuz
> Morales [mlzmrls en gmail.com]
> Enviado: jueves, 28 de mayo de 2015 16:14
> Para: Carlos Ortega
> CC: R-help-es en r-project.org
> Asunto: Re: [R-es] La ejecución de mi script R es muy lenta
>
> Hola,
> gracias por contestar tan rápido.
> En el email he adjuntado los archivos seta y outcomes.csv, no me queda
> claro como hacer para que podáis acceder a ellos de otra manera.
>
> El 28 de mayo de 2015, 15:53, Carlos Ortega <cof en qualityexcellence.es>
> escribió:
>
> > Hola,
> >
> > Si no tienes inconveniente en compartir tu conjunto de datos (puedes
> > dejarlo en un Dropbox y compartir enlace) o incluir una salida de la
> > variables: "seta" y "outcomes" (función "save.image()") con eso podemos
> > darte alguna solución mucho más rápida que la que planteas.
> >
> > En tu código con un bucle estás tratando de rellenar una lista que son
> los
> > diferentes agregados y esto se puede hacer mucho más rápido (segundos)
> con
> > varios paquetes: data.table, dplyr y sqldf.
> >
> >
> > Saludos,
> > Carlos Ortega
> > www.qualityexcellence.es
> >
> > El 28 de mayo de 2015, 15:34, <javier.ruben.marcuzzi en gmail.com>
> escribió:
> >
> >> Estimada María Luz Morales
> >>
> >>
> >> Puedes intentar con data.table y reemplazar for por algina otra opción
> >> vectorizada, aunque en R moderno esto mejoró, y la posibilidad de
> compile
> >> debería ser evaluada.
> >>
> >>
> >>
> >>
> >>
> >>
> >> Javier Rubén Marcuzzi
> >> Técnico en Industrias Lácteas
> >> Veterinario
> >>
> >>
> >>
> >>
> >>
> >> De: MªLuz Morales
> >> Enviado el: ‎jueves‎, ‎28‎ de ‎mayo‎ de ‎2015 ‎10‎:‎21‎ ‎a.m.
> >> Para: R-help-es en r-project.org
> >>
> >>
> >>
> >>
> >>
> >> En el correo anterior se me olvidó mencionar que trabajo con Rstudio
> >>
> >> El 28 de mayo de 2015, 15:18, MªLuz Morales <mlzmrls en gmail.com>
> escribió:
> >>
> >> > Hola,
> >> > soy nueva en esta lista y también en R. Yo he realizado un  script en
> R
> >> > que  carga dos archivos csv, uno de ellos con casi 2 millones de
> filas.
> >> El
> >> > programa carga esos archivos a data frame, y se trata simplemente de
> >> > seleccionar ciertos datos, hacer alguna operación (media, minimo,
> >> máximo)
> >> > y  presentarlos en una tabla que tendrá 4000 filas. La ejecución de
> este
> >> > programa ha tardado casi 3 horas!!!!, podéis decirme si R es lento en
> >> esta
> >> > operación o es que mi código no está optimizado y no estoy haciéndolo
> >> de la
> >> > forma correcta.
> >> > El código de mi programa es el siguiente:
> >> >
> >> >
> >> >
> >>
> #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >> > ## Set-A.csv y Outcomes.csv deben estar en el directorio actual
> >> > #  Transforma csv a data frame
> >> > seta <- read.csv('Set-A.csv');
> >> > outcomes <- read.csv('Outcomes-A.csv');
> >> >
> >> > ids <- as.character(unique(outcomes$RecordID));
> >> > ## Número de RecordsID distintos
> >> > Length_ids <- length(ids); #número de RecordsID distintos
> >> > ListaABP <- list('RecordID'=-1,'SAPS.I'=-1, 'SOFA'=-1, 'Survival'=-1,
> >> > 'In.hospital_death'=-1, 'NISysABP_Min'=-1,'NISysABP_Max'=-1,
> >> > 'NISysABP_Mean'=-1, 'NIDiasABP_Min'=-1,'NIDiasABP_Max'=-1,
> >> > 'NIDiasABP_Mean'=-1,'NIMAP_Min'=-1,'NIMAP_Max'=-1, 'NIMAP_Mean'=-1);
> >> > for (i in 1:Length_ids){#NumRecordID){   # Para cada paciente...
> >> >
> >> >   ListaABP$RecordID[i] <- outcomes$RecordID[i];
> >> >   ListaABP$SAPS.I[i] <- outcomes$SAPS.I[i];
> >> >   ListaABP$SOFA[i] <- outcomes$SOFA[i];
> >> >   ListaABP$Survival[i] <- outcomes$Survival[i];
> >> >   ListaABP$In.hospital_death[i] <- outcomes$In.hospital_death[i];
> >> >
> >> >   # Parameter == 'NISysBP'
> >> >   #seta_NISysABP <- seta[seta$RecordID == ids[i] & seta$Parameter ==
> >> > 'NISysABP' , c('RecordID','Value')] ;
> >> >   seta_NISysABP <- seta[seta$RecordID == ids[i] & seta$Parameter ==
> >> > 'NISysABP' , 'Value'] ; #Creo que esto ya no sería un dataframe, por
> lo
> >> que
> >> > en la siguiente línea puede dar error
> >> >   ListaABP$NISysABP_Min[i] <- min(seta_NISysABP);
> >> >   ListaABP$NISysABP_Max[i] <- max(seta_NISysABP);
> >> >   ListaABP$NISysABP_Mean[i] <- mean(seta_NISysABP);
> >> >
> >> >   # Parameter == 'NIDiasABP'
> >> >   #seta_NIDiasABP <- seta[seta$RecordID == ids[i] & seta$Parameter ==
> >> > 'NIDiasABP' , c('Time','Value')] ; #En este caso la forma de hacer el
> >> min
> >> > sería ...min(seta_NIDiasABP$Value);
> >> >   seta_NIDiasABP <- seta[seta$RecordID == ids[i] & seta$Parameter ==
> >> > 'NIDiasABP' , 'Value'] ;
> >> >   ListaABP$NIDiasABP_Min[i] <- min(seta_NIDiasABP);
> >> >   ListaABP$NIDiasABP_Max[i] <- max(seta_NIDiasABP);
> >> >   ListaABP$NIDiasABP_Mean[i] <- mean(seta_NIDiasABP);
> >> >
> >> >   # Parameter == 'NIMAP'
> >> >   #seta_NIMAP <- seta[seta$RecordID == ids[i] & seta$Parameter ==
> >> 'NIMAP'
> >> > , c('Time','Value')] ;
> >> >   seta_NIMAP <- seta[seta$RecordID == ids[i] & seta$Parameter ==
> >> 'NIMAP' ,
> >> > 'Value'] ;
> >> >   ListaABP$NIMAP_Min[i] <- min(seta_NIMAP);
> >> >   ListaABP$NIMAP_Max[i] <- max(seta_NIMAP);
> >> >   ListaABP$NIMAP_Mean[i] <- mean(seta_NIMAP);
> >> >
> >> > }#for i
> >> >
> >> > Tabla <- data.frame(ListaABP);
> >> >
> >> >
> >> >
> >>
> #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >> >
> >> > Gracias de antemano
> >> > Un saludo
> >> > MªLuz
> >> >
> >> >
> >>
> >>  [[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
> >>         [[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
> >>
> >
> >
> >
> > --
> > Saludos,
> > Carlos Ortega
> > www.qualityexcellence.es
> >
>
>         [[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
>
> ________________________________
>
> Nota: A información contida nesta mensaxe e os seus posibles documentos
> adxuntos é privada e confidencial e está dirixida únicamente ó seu
> destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe,
> por favor elimínea. A distribución ou copia desta mensaxe non está
> autorizada.
>
> Nota: La información contenida en este mensaje y sus posibles documentos
> adjuntos es privada y confidencial y está dirigida únicamente a su
> destinatario/a. Si usted no es el/la destinatario/a original de este
> mensaje, por favor elimínelo. La distribución o copia de este mensaje no
> está autorizada.
>
> See more languages: http://www.sergas.es/aviso_confidencialidad.htm
>

	[[alternative HTML version deleted]]



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