Thanks Patrick, Albyn, and Vadim.

rle() does what I want and, Vadim, your method gives the same results in a different form. I appreciate the help!

Sean

On Jan 27, 2005, at 5:29 PM, Vadim Ogranovich wrote:

Untested:

c(TRUE, b[-1] != b[-length(b)]) gives you the (logical) indexes of the
beginnings of the runs
c(b[-1] != b[-length(b)], TRUE) gives you the (logical) indexes of the
ends of the runs

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Sean Davis
Sent: Thursday, January 27, 2005 2:14 PM
To: r-help
Subject: [R] Finding "runs" of TRUE in binary vector

I have a binary vector and I want to find all "regions" of
that vector that are runs of TRUE (or FALSE).

a <- rnorm(10)
b <- a<0.5
b
  [1]  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE

My function would return something like a list:
region[[1]] 1,3
region[[2]] 5,5
region[[3]] 7,10

Any ideas besides looping and setting start and ends directly?

Thanks,
Sean

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html


______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to