[R] How do I avoid a loop?

From: Feng, Ken <ken.feng_at_citi.com>
Date: Tue, 19 Jun 2007 18:11:58 +0900


Hi,

I start with an array of booleans:

        x <- c( TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE );

I want to define an y <- f(x) such that:

        y <- c( 1, 2, 3, 0, 0, 1, 2, 0, 1 );

In other words, do a cumsum when I see a TRUE, but reset to 0 if I see a FALSE.

I know I can do this with a very slow and ugly loop or maybe use apply, but I was hoping there are some R experts out there who can show me a cleaner/more elegant solution?

Thanks in advance.


R-help_at_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 and provide commented, minimal, self-contained, reproducible code. Received on Tue 19 Jun 2007 - 09:17:40 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 19 Jun 2007 - 15:32:07 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.