Luciano me parece que esto resuelve tu problema

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)

lookforKones<-function(test,k)
{
 I1=seq(1,length(test),1)[test==0]
 I1[(I1[2:length(I1)]-I1[1:length(I1)-1])>=k]+1
}

#usage lookforKones(test,600)


Prof. Julio Di Rienzo
Estadística y Biometría
FCA- U.N. Córdoba
IBS CC Member
http://sites.google.com/site/juliodirienzo
"Biometry, the active pursuit of biological
knowledge by quantitative methods."
(R.A. Fisher, 1948)



2009/11/2 Luciano Selzer <luciano.selzer@gmail.com>

> 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
>
> _______________________________________________
> R-help-es mailing list
> R-help-es@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>

	[[alternative HTML version deleted]]

