[Rd] HOW TO AVOID LOOPS

hadley wickham h.wickham at gmail.com
Sat Apr 12 23:23:08 CEST 2008


On Sat, Apr 12, 2008 at 11:47 AM, carlos martinez
<martinezbula at earthlink.net> wrote:
> > Looking for a simple, effective a minimum execution time solution.
>  >
>  > For a vector as:
>  >
>  > c(0,0,1,0,1,1,1,0,0,1,1,0,1,0,1,1,1,1,1,1)
>  >
>  To transform it to the following vector without using any loops:
>
>  > (0,0,1,0,1,2,3,0,0,1,2,0,1,0,1,2,3,4,5,6)
>  >
>  Appreciate any suggetions.

How about:

unlist(lapply(split(x, cumsum(x == 0)), seq_along)) - 1

Hadley


-- 
http://had.co.nz/



More information about the R-devel mailing list