[R-es] La ejecución de mi script R es muy lenta
MªLuz Morales
mlzmrls en gmail.com
Jue Mayo 28 15:21:39 CEST 2015
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]]
Más información sobre la lista de distribución R-help-es