[R-es] problemas con tryCatch

2015-05-28 Thread Sergio Castro
Buenos días,

Quiero hacer una función con un "if", que si devuelve un error dentro
de él se pare la ejecución de la función devolviendo un valor. El
código que tengo, para las pruebas, es el siguiente:

prueba<-function(a){
b<-"no ha hecho stop"
c<-"hago el stop"
if(a<3){
variable<-"hola"
tryCatch({
write("entro en el tryCatch","")
d<-variable*3
},error=function(e){
return(c)
stop(write("ha dado error",""))
})
}else{
b<-a*a*a
}
return (b)
}

prueba(2)

La salida que me devuelve R por pantalla es:

entro en el tryCatch
[1] "no ha hecho stop"

Cuando la que yo quiero es:

entro en el tryCatch
ha dado error
[1] "hago el stop"

Es decir que me saque por pantalla el mensaje que tengo en el stop y
que la salida de la función sea la variable c.

Muchas gracias por vuestra ayuda.

Un saludo

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] problemas con tryCatch

2015-05-28 Thread Carlos Ortega
Hola,

Mira esta referencia sobre cómo usar "tryCatch()":

http://www.win-vector.com/blog/2012/10/error-handling-in-r/

Saludos,
Carlos Ortega

El 28 de mayo de 2015, 10:50, Sergio Castro <
castro.rodriguez.ser...@gmail.com> escribió:

> Buenos días,
>
> Quiero hacer una función con un "if", que si devuelve un error dentro
> de él se pare la ejecución de la función devolviendo un valor. El
> código que tengo, para las pruebas, es el siguiente:
>
> prueba<-function(a){
> b<-"no ha hecho stop"
> c<-"hago el stop"
> if(a<3){
> variable<-"hola"
> tryCatch({
> write("entro en el tryCatch","")
> d<-variable*3
> },error=function(e){
> return(c)
> stop(write("ha dado error",""))
> })
> }else{
> b<-a*a*a
> }
> return (b)
> }
>
> prueba(2)
>
> La salida que me devuelve R por pantalla es:
>
> entro en el tryCatch
> [1] "no ha hecho stop"
>
> Cuando la que yo quiero es:
>
> entro en el tryCatch
> ha dado error
> [1] "hago el stop"
>
> Es decir que me saque por pantalla el mensaje que tengo en el stop y
> que la salida de la función sea la variable c.
>
> Muchas gracias por vuestra ayuda.
>
> Un saludo
>
> ___
> R-help-es mailing list
> R-help-es@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@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


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

2015-05-28 Thread MªLuz Morales
En el correo anterior se me olvidó mencionar que trabajo con Rstudio

El 28 de mayo de 2015, 15:18, MªLuz Morales  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@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] problemas con tryCatch

2015-05-28 Thread Sergio Castro
Muchas gracias,

Eso me ayuda en casi todo lo que necesito, a excepción del return. Si
meto un return dentro del error, falla y sale del tryCatch, siguiendo
con la ejecución. Mi flujo es el siguiente: Tengo una función A que
llama a la función B. En la función B tengo el tryCatch. Si se produce
un error en B, que lo tengo controlado por el tryCatch, quiero
devolver un valor KO a la función A y parar la ejecución de B en ese
punto.

Un saludo.

El día 28 de mayo de 2015, 13:30, Carlos Ortega
 escribió:
> Hola,
>
> Mira esta referencia sobre cómo usar "tryCatch()":
>
> http://www.win-vector.com/blog/2012/10/error-handling-in-r/
>
> Saludos,
> Carlos Ortega
>
> El 28 de mayo de 2015, 10:50, Sergio Castro
>  escribió:
>>
>> Buenos días,
>>
>> Quiero hacer una función con un "if", que si devuelve un error dentro
>> de él se pare la ejecución de la función devolviendo un valor. El
>> código que tengo, para las pruebas, es el siguiente:
>>
>> prueba<-function(a){
>> b<-"no ha hecho stop"
>> c<-"hago el stop"
>> if(a<3){
>> variable<-"hola"
>> tryCatch({
>> write("entro en el tryCatch","")
>> d<-variable*3
>> },error=function(e){
>> return(c)
>> stop(write("ha dado error",""))
>> })
>> }else{
>> b<-a*a*a
>> }
>> return (b)
>> }
>>
>> prueba(2)
>>
>> La salida que me devuelve R por pantalla es:
>>
>> entro en el tryCatch
>> [1] "no ha hecho stop"
>>
>> Cuando la que yo quiero es:
>>
>> entro en el tryCatch
>> ha dado error
>> [1] "hago el stop"
>>
>> Es decir que me saque por pantalla el mensaje que tengo en el stop y
>> que la salida de la función sea la variable c.
>>
>> Muchas gracias por vuestra ayuda.
>>
>> Un saludo
>>
>> ___
>> R-help-es mailing list
>> R-help-es@r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


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

2015-05-28 Thread javier.ruben.marcuzzi
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@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  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@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es
[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


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

2015-05-28 Thread Carlos Ortega
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,  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@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  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@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
> [[alternative HTML version deleted]]
>
> ___
> R-help-es mailing list
> R-help-es@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@r-p

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

2015-05-28 Thread MªLuz Morales
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 
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,  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@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  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@r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help

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

2015-05-28 Thread miguel.angel.rodriguez.muinos
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-boun...@r-project.org] en nombre de MªLuz Morales 
[mlzm...@gmail.com]
Enviado: jueves, 28 de mayo de 2015 16:14
Para: Carlos Ortega
CC: R-help-es@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 
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,  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@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  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);
>>