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.