| nearest {IRanges} | R Documentation |
The nearest, precede and follow methods find
nearest neighbors between Ranges instances.
nearest(x, subject, ...) precede(x, subject = x, ...) follow(x, subject = x, ...)
x |
The query Ranges instance. |
subject |
The subject Ranges instance, within which the
nearest neighbors are found. Can be missing, in which case the
query, x, is also the subject.
|
... |
Additional arguments for methods |
nearest is the conventional nearest neighbor finder and returns
a integer vector containing the index of the nearest neighbor range in
subject for each range in x. If there is no nearest
neighbor (if subject is empty), NA's are returned.
The algorithm is roughly as follows, for a range xi in x:
subject that overlap xi. If a
single range si in subject overlaps xi, si
is returned as the nearest neighbor of xi. If there are
multiple overlaps, one of the overlapping ranges is chosen
arbitrarily.
subject overlap with xi, then
the range in subject with the shortest distance from its end to
the start xi or its start to the end of xi is
returned.
For each range in x, precede returns the index of the
interval in subject that is directly preceded by the query
range. Note that any overlapping ranges are excluded. NA is
returned when there are no qualifying ranges in subject.
follow is the opposite of precede: it returns the index
of the range in subject that a query range in x directly
follows.
M. Lawrence
findOverlaps for finding just the overlapping ranges.
query <- IRanges(c(1, 3, 9), c(2, 7, 10)) subject <- IRanges(c(3, 5, 12), c(3, 6, 12)) nearest(query, subject) # c(1L, 1L, 3L) nearest(query) # c(2L, 1L, 2L) query <- IRanges(c(1, 3, 9), c(3, 7, 10)) subject <- IRanges(c(3, 2, 10), c(3, 13, 12)) precede(query, subject) # c(3L, 3L, NA) precede(IRanges(), subject) # integer() precede(query, IRanges()) # rep(NA_integer_, 3) precede(query) # c(3L, 3L, NA) follow(query, subject) # c(NA, NA, 1L) follow(IRanges(), subject) # integer() follow(query, IRanges()) # rep(NA_integer_, 3) follow(query) # c(NA, NA, 2L)