Hi,

I have the following sequence:
in <- c(0, 0, 0, 2, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 2, 0, 0, 2)

>From this sequence I would like to get to the following sequence:
out <- c(0, 0, 0, 3, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,
0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 2, 0, 2, 0, 0, 2)

Basically, what I would like to do for each number greater than 0,  is to
add all adjacent numbers and the adjacent numbers of those numbers, etc.
until one of those numbers is equal to 0.

I could manually repeat the loops below until "sequence" stops changing but
there must be a smarter way. Any suggestions? Thanks!

sequence <- c(0, 0, 0, 2, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 2, 0, 0, 2)
    for (h in 2:(length(sequence) - 1))
      {
      sequence[h] <- ifelse(sequence[h] > 0, sequence[h-1] + sequence[h], 0)
      }
    
    for (h in 1:(length(sequence) - 1))
      {
      sequence[h] <- ifelse(sequence[h] > 0 & sequence[h+1] > sequence[h],
sequence[h+1], sequence[h])
      }  

--
View this message in context: 
http://r.789695.n4.nabble.com/Finding-and-manipulation-clusters-of-numbers-in-a-sequence-of-numbers-tp4636661.html
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
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.

Reply via email to