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

javier.ruben.marcuzzi en gmail.com javier.ruben.marcuzzi en gmail.com
Jue Mayo 28 15:34:36 CEST 2015


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]]



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