IRanges-setops {IRanges} | R Documentation |
Performs set operations on IRanges objects.
## Vector-wise operations: gaps(x, start=NA, end=NA) ## S4 method for signature 'IRanges,IRanges': union(x, y) ## S4 method for signature 'IRanges,IRanges': intersect(x, y) ## S4 method for signature 'IRanges,IRanges': setdiff(x, y) ## Element-wise (aka "parallel") operations: ## S4 method for signature 'IRanges,IRanges': punion(x, y, fill.gap=FALSE, ...) ## S4 method for signature 'IRanges,IRanges': pintersect(x, y, resolve.empty=c("none", "max.start", "start.x"), ...) ## S4 method for signature 'IRanges,IRanges': psetdiff(x, y, ...) ## S4 method for signature 'IRanges,IRanges': pgap(x, y, ...)
x, y |
IRanges objects. |
start, end |
A single integer or NA . Use these arguments to specify the
interval of reference i.e. which interval the returned gaps
should be relative to.
|
fill.gap |
Logical indicating whether or not to force a union by using the rule
start = min(start(x), start(y)), end = max(end(x), end(y)) .
|
resolve.empty |
One of "none" , "max.start" , or "start.x" denoting
how to handle ambiguous empty ranges formed by intersections.
"none" - throw an error if an ambiguous empty range is formed,
"max.start" - associate the maximum start value with any
ambiguous empty range, and "start.x" - associate the start value
of x with any ambiguous empty range. (See Details section
below for the definition of an ambiguous range.)
|
... |
Further arguments to be passed to or from other methods. |
gaps
returns the "normal" IRanges object (of the same
class as x
) representing the set of integers that remain
after the set of integers represented by x
has been removed
from the interval specified by the start
and end
arguments.
The union
, intersect
and setdiff
methods
for IRanges objects return a "normal" IRanges
object (of the same class as x
) representing the union,
intersection and (asymmetric!) difference of the sets of integers
represented by x
and y
.
punion
, pintersect
, psetdiff
and pgap
are generic functions that compute the element-wise (aka "parallel")
union, intersection, (asymmetric!) difference and gap between
each element in x
and its corresponding element in y
.
Methods for IRanges objects are defined. For these methods,
x
and y
must have the same length (i.e. same number
of ranges) and they return an IRanges instance of the
same length as x
and y
where each range represents
the union/intersection/difference/gap of/between the corresponding
ranges in x
and y
.
By default, pintersect
will throw an error when an "ambiguous
empty range" is formed. An ambiguous empty range can occur three
different ways: 1) when corresponding non-empty ranges elements x
and y
have an empty intersection, 2) if the position of an empty
range element does not fall within the corresponding limits of a non-empty
range element, or 3) if two corresponding empty range elements do not have
the same position. For example if empty range element [22,21] is intersected
with non-empty range element [1,10], an error will be produced; but if
it is intersected with the range [22,28], it will produce [22,21].
As mentioned in the Arguments section above, this behavior can be
changed using the resolve.empty
argument.
H. Pages and M. Lawrence
pintersect
is similar to narrow
, except the
end points are absolute, not relative. pintersect
is also
similar to restrict
, except ranges outside of the
restriction become empty and are not discarded.
union, intersect, setdiff, Ranges-class, Ranges-utils, IRanges-class, IRanges-utils
x0 <- IRanges(start=c(-2, 6, 9, -4, 1, 0, -6, 10), width=c( 5, 0, 6, 1, 4, 3, 2, 3)) gaps(x0) gaps(x0, start=-6, end=20) # Regions of the -6:20 range that are not masked by 'x0'. x <- IRanges(c(1, 5, -2, 0, 14), c(10, 9, 3, 11, 17)) y <- Views(as(4:-17, "XInteger"), start=c(14, 0, -5, 6, 18), end=c(20, 2, 2, 8, 20)) ## Vector-wise operations: union(x, y) union(y, x) intersect(x, y) intersect(y, x) setdiff(x, y) setdiff(y, x) ## Element-wise (aka "parallel") operations: try(punion(x, y)) punion(x[3:5], y[3:5]) punion(x, y, fill.gap=TRUE) try(pintersect(x, y)) pintersect(x[3:4], y[3:4]) pintersect(x, y, resolve.empty="max.start") psetdiff(y, x) try(psetdiff(x, y)) start(x)[4] <- -99 end(y)[4] <- 99 psetdiff(x, y) pgap(x, y)