[R] switching elements of a vector

Chuck Cleland ccleland at optonline.net
Mon May 24 12:28:28 CEST 2010


On 5/24/2010 6:02 AM, speretti wrote:
> Hi,
> 
> I would like to receive help for the following matter:
> 
> If I'm dealing with a numeric vectors containing increasing elements.
> i.e.
> 
> a<-c(1,2,2,2,2,3,3,3,4,4,4,5,5,6,7,7,7) 
> 
> There exist an efficient way to obtain an vector that indicates the position
> of the changing element of "a"?
> In this case it would be something like:
> 
> index<-c(1,6,9,12,14,15)

a <- c(1,2,2,2,2,3,3,3,4,4,4,5,5,6,7,7,7)

rle(a)
Run Length Encoding
  lengths: int [1:7] 1 4 3 3 2 1 3
  values : num [1:7] 1 2 3 4 5 6 7

cumsum(head(rle(a)$lengths, -1)) + 1
[1]  2  6  9 12 14 15

?rle

> usually I'm used cycles to obtain boolean vectors of the same length of "a"
> indicating the changing elements ...later I've muliplied them for their
> numeric sequence and after that I've selected elements different from zero
> ...it is quite long...
> can you find an easier solution?
> 
> Thank you for you help

-- 
Chuck Cleland, Ph.D.
NDRI, Inc. (www.ndri.org)
71 West 23rd Street, 8th floor
New York, NY 10010
tel: (212) 845-4495 (Tu, Th)
tel: (732) 512-0171 (M, W, F)
fax: (917) 438-0894



More information about the R-help mailing list