| interval_overlap {intervals} | R Documentation |
Given two objects, a set of query intervals and a set of targets, assess which query intervals, if any, overlap each target.
## S4 method for signature 'Intervals_virtual, ## Intervals_virtual': interval_overlap(target, query, check_valid = TRUE) ## S4 method for signature 'Intervals_virtual, numeric': interval_overlap(target, query, check_valid = TRUE)
target |
An "Intervals" or "Intervals_full" object. The
target object must have the same type as
query, unless query is of type "numeric".
|
query |
An "Intervals" or "Intervals_full"
object. If a numeric vector is supplied instead, the function checks
to see which points are included in the targets.
|
check_valid |
Should validObject be called before passing to
compiled code? This, among other things, verifies that endpoints are
of data type numeric and the closed vector/matrix is
appropriately sized and of the correct data type. (Compiled code
does no further checking.)
|
Intervals which meet at endpoints overlap only if both endpoints are
closed. Intervals in query with NA endpoints are
ignored, with a warning; in target, such intervals produce no
matches. Intervals in either query or target which are
actually empty have their endpoints set to NA before
proceeding, with warning, and so do not generate matches. If
query is of type "numeric" and type(target) is
"Z", then non-integer entries of query will be set to
NA, with warning.
A list, with one element for each row of target. The elements
are vectors of indices, indicating which query rows (or query
components, for the "numeric" method) overlap each target. A
list element of length 0 indicates a target with no overlapping query
elements.
If you want real (type = "R") intervals that overlap in a set
of positive measure – not just at endpoints – set all endpoints to
open (i.e., closed(query) <- FALSE) first.
# Note that t contains a valid but empty interval.
q <- Intervals(
matrix(
c(
2, 8,
3, 4,
5, 10
),
ncol = 2, byrow = TRUE
),
closed = c( TRUE, FALSE ),
type = "Z"
)
t <- Intervals(
matrix(
c(
2, 8,
8, 9,
6, 9,
11, 12,
3, 3
),
ncol = 2, byrow = TRUE
),
closed = c( TRUE, FALSE ),
type = "Z"
)
rownames(t) <- letters[1:nrow(t)]
empty(q)
empty(t)
interval_overlap(t, q)
# Non-empty real intevals of size 0 can overlap other intervals.
u <- q
type(u) <- "R"
v <- Intervals_full( rep(3,4) )
closed(v)[2,] <- FALSE
v
empty(v)
size(v)
interval_overlap(v, u)
# Querying points
interval_overlap( t, c( 2, 3, 6, NA ) )
# Non-integer points dropped for targets over Z
interval_overlap( q, c( 2, 2.5, 3 ) )
interval_overlap( u, c( 2, 2.5, 3 ) )