seqapply {IRanges} | R Documentation |
The seqapply
family of functions behaves much like the existing
lapply
family, except the return value is cast to a
Vector subclass. This facilitates constraining
computation to the Vector
framework across iteration and
(for seqsplit
) splitting.
seqapply(X, FUN, ...) mseqapply(FUN, ..., MoreArgs = NULL, USE.NAMES = TRUE) tseqapply(X, INDEX, FUN = NULL, ...) seqsplit(x, f, drop = FALSE) seqby(data, INDICES, FUN, ...)
X |
The object over which to iterate, usually a vector or |
x |
Like |
data |
Like |
FUN |
The function that is applied to each element of |
MoreArgs |
Additional arguments to |
USE.NAMES |
Whether the return values should inherit names from one of the arguments |
INDEX |
A |
INDICES |
Like |
f |
A |
drop |
Whether to drop empty elements from the returned list |
... |
Extra arguments to pass to |
These functions should be used just like their base equivalent:
seqapply
=> lapply
mseqapply
=> mapply
tseqapply
=> tapply
seqsplit
=> split
seqby
=> by
The only difference is that the result is cast to a Vector
object. The casting logic simply looks for a common class from which
all returned values inherit. It then checks for the existence of a
function of the form ClassList
where Class
is the name
of the class. If such a function is not found, the search proceeds up
the hierarchy of classes. An error is thrown when hierarchy is
exhausted. If ClassList
is found, it is called with the list of
return values as its only argument, under the assumption that
a Vector
-derived instance will be constructed.
A Vector
object
Michael Lawrence
starts <- IntegerList(c(1, 5), c(2, 8)) ends <- IntegerList(c(3, 8), c(5, 9)) rangesList <- mseqapply(IRanges, starts, ends) rangeDataFrame <- stack(rangesList, "space", "ranges") dataFrameList <- seqsplit(rangeDataFrame, rangeDataFrame$space) starts <- seqapply(dataFrameList[,"ranges"], start)