IRanges-setops {IRanges} | R Documentation |
Performs set operations on IRanges objects.
## Vector-wise operations: ## 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. |
... |
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).
|
The union
, intersect
and setdiff
methods
for IRanges objects return a "normal" IRanges instance
representing the union, intersection and (asymmetric!) difference
of the sets of integers represented by x
and y
.
punion
, pintersect
and psetdiff
are generic functions that perform the element-wise (aka "parallel")
union, intersection and (asymmetric!) difference of x
and 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 of 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.
pgap
returns the gap between each element in x
and
its corresponding element in y
, in parallel fashion, returning
an IRanges
instance. If two ranges overlap, the gap is empty.
H. Pages and M. Lawrence
Ranges-class, IRanges-class, IRanges-utils
x <- IRanges(c(1, 5, -2, 0, 14), c(10, 9, 3, 11, 17)) y <- IRanges(c(14, 0, -5, 6, 18), c(20, 2, 2, 8, 20)) ## Vector-wise operations: union(x, y) intersect(x, y) 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)