On 17-09-2013, at 12:15, gildororo...@mail-on.us wrote: > I can do this: > >> 1:10 %in% c(3, 5, 6, 10) > [1] FALSE FALSE TRUE FALSE TRUE TRUE FALSE FALSE FALSE TRUE > > but what I wish to get is: > > [1] 3 2 1 4 > > let me explain: > > 3 # [1:3] ends with TRUE, i.e. FALSE FALSE TRUE > 2 # [4:5] ends with TRUE, i.e. FALSE TRUE > 1 # [6:6] ends with TRUE, i.e. TRUE > 4 # [7:10] ends with TRUE, i.e. FALSE FALSE FALSE TRUE > > That is, %in% gave me a serial whether or not the element is in a set, the > length is equal to the former, i.e. 1:10 > > But I wish to get a serial of intevals of occurance of the element in the > set, the length is equal to the latter i.e. c(3, 5, 6, 10)
One way is > diff(c(0,which(1:10 %in% a))) [1] 3 2 1 4 Berend ______________________________________________ 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.