[R-es] Optimizar código

Luciano Selzer luciano.selzer en gmail.com
Lun Nov 2 13:53:58 CET 2009


Hola lista, tengo una base de datos muy grande de un datalogger.
Consiste en un vector con 0's y 1's, y tengo que ver cuando hay 600 o
más unos seguidos. Se me ocurrió hacerlo con un loop for. Pero tarda
demasiado. También intente usar which para que seleccione solo los 1
para empezar a sumar pero no hay gran diferencia. A alguien se le
ocurre alguna solución para hacerlo más rápido?

Acá está el código con los datos de prueba:

test<-rep(c(rep(0,5),rep(1,601),rep(0,100),rep(1,100),rep(0,3),rep(1,200),rep(0,300),rep(1,1000)),100)
loop<-numeric()
for (i in 1:length(test)) {
    loop[i]<-sum(test[i:(i+600)])
    }

loop2<-numeric()
for (i in which(test==1)) {
    loop2[i]<-sum(test[i:(i+600)])
}



Muchas gracias a todos los que contesten.
Luciano



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