[R] counting repeating sequence lengths in a vector

2010-02-22 Thread Larson, TR

Hello,
I have a very long (~50,000) sequence of repeating numbers.  The first 
100 are:


[1] 0 0 0 0 0 0 0 0 0 0 0   429
 [13]   429   429   429   429   429   429   429   858   858   858   858 
  858
 [25]   858  1287  1287  1287  1287  1287  1716  2145  2145  2574  2574 
 3003
 [37]  3003  3432  3432  3861  4290  4719  5148  5577  5577  6006  6006 
 6006
 [49]  6435  6435  6435  6864  6864  7293  7293  7293  7722  7722  7722 
 7722
 [61]  8151  8151  8151  8580  8580  8580  9009  9009  9009  9009  9438 
 9438
 [73]  9438  9438  9867  9867  9867 10296 10296 10296 10725 10725 10725 
10725
 [85] 11154 11154 11154 11154 11154 11583 11583 11583 11583 12012 12012 
12012

 [97] 12012 12441 12441 12441


What I want is to produce a vector of lengths for each contiguous run of 
numbers . i.e. for the above example, the first three items of the 
vector returned would be:


11 8 6

...to represent the counts of 0, 429, and 585, respectively.  I could do 
this with unique() and a for loop, but this would be very inefficient. 
Any advice on how to do this efficiently would be most appreciated.


thanks
Tony

__
R-help@r-project.org 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.


Re: [R] counting repeating sequence lengths in a vector

2010-02-22 Thread Henrique Dallazuanna
Try this:

rle(x)$length


On Mon, Feb 22, 2010 at 2:27 PM, Larson, TR t...@york.ac.uk wrote:
 Hello,
 I have a very long (~50,000) sequence of repeating numbers.  The first 100
 are:

 [1]     0     0     0     0     0     0     0     0     0     0     0   429
  [13]   429   429   429   429   429   429   429   858   858   858   858  858
  [25]   858  1287  1287  1287  1287  1287  1716  2145  2145  2574  2574
  3003
  [37]  3003  3432  3432  3861  4290  4719  5148  5577  5577  6006  6006
  6006
  [49]  6435  6435  6435  6864  6864  7293  7293  7293  7722  7722  7722
  7722
  [61]  8151  8151  8151  8580  8580  8580  9009  9009  9009  9009  9438
  9438
  [73]  9438  9438  9867  9867  9867 10296 10296 10296 10725 10725 10725
 10725
  [85] 11154 11154 11154 11154 11154 11583 11583 11583 11583 12012 12012
 12012
  [97] 12012 12441 12441 12441


 What I want is to produce a vector of lengths for each contiguous run of
 numbers . i.e. for the above example, the first three items of the vector
 returned would be:

 11 8 6

 ...to represent the counts of 0, 429, and 585, respectively.  I could do
 this with unique() and a for loop, but this would be very inefficient. Any
 advice on how to do this efficiently would be most appreciated.

 thanks
 Tony

 __
 R-help@r-project.org 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.




-- 
Henrique Dallazuanna
Curitiba-Paraná-Brasil
25° 25' 40 S 49° 16' 22 O

__
R-help@r-project.org 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.