Find the ‘bounds’ (i.e. start, end and length) of consecutive numbers within a larger set of numbers in a given vector.

bounds(nums, dup.inds=FALSE, pre.sort=TRUE)



a numeric vector.


logical, if TRUE the bounds of consecutive duplicated elements are returned.


logical, if TRUE the input vector is ordered prior to bounds determination.


This is a simple utility function useful for summarizing the contents of a numeric vector. For example: find the start position, end position and lengths of secondary structure elements given a vector of residue numbers obtained from a DSSP secondary structure prediction.

By setting ‘dup.inds’ to TRUE then the indices of the first (start) and last (end) duplicated elements of the vector are returned. For example: find the indices of atoms belonging to a particular residue given a vector of residue numbers (see below).


Returns a three column matrix listing starts, ends and lengths.


Grant, B.J. et al. (2006) Bioinformatics 22, 2695--2696.


Barry Grant


test <- c(seq(1,5,1),8,seq(10,15,1)) bounds(test)
#> start end length #> 1 1 5 5 #> 2 8 8 1 #> 3 10 15 6
test <- rep(c(1,2,4), times=c(2,3,4)) bounds(test, dup.ind=TRUE)
#> start end length #> [1,] 1 1 2 2 #> [2,] 2 3 5 3 #> [3,] 3 6 9 4