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: punion(x, y, ...) pintersect(x, y, ...) psetdiff(x, y, ...) 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.
|
... |
Further arguments to be passed to or from other methods.
For example, the fill.gap argument can be passed to the
punion method for IRanges objects (see below).
|
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
.
Note that the union or difference of 2 ranges cannot always
be represented by a single range so punion
and psetdiff
cannot always return their result in an IRanges instance of
the same length as the input. This happens to punion
when
there is a gap between the 2 ranges to combine. In that case,
the user can use the fill.gap
argument to enforce the union
by filling the gap. This happens to psetdiff
when a range
in y
has its end points strictly inside the corresponding
range in x
. In that case, psetdiff
will simply fail.
If two ranges overlap, then the gap between them is empty.
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, 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) pintersect(x, y) psetdiff(y, x) try(psetdiff(x, y)) start(x)[4] <- -99 end(y)[4] <- 99 psetdiff(x, y) pgap(x, y)