Performs set intersection, union and difference between vectors of
temporal types from the nanotime package.
## S4 method for signature 'nanoival,nanoival'
intersect(x, y)
# S4 method for signature 'nanoival,nanoival'
union(x, y)
# S4 method for signature 'nanoival,nanoival'
setdiff(x, y)
# S4 method for signature 'nanotime,nanoival'
intersect.idx(x, y)
# S3 method for class 'nanotime'
x %in% table
# S4 method for signature 'nanotime,nanoival'
x %in% table
# S4 method for signature 'nanotime,nanoival'
intersect(x, y)
# S4 method for signature 'nanotime,nanoival'
setdiff(x, y)
# S4 method for signature 'nanotime,nanoival'
setdiff.idx(x, y)
# S4 method for signature 'nanotime,nanotime'
intersect(x, y)
# S4 method for signature 'nanotime,nanotime'
union(x, y)
# S4 method for signature 'nanotime,nanotime'
setdiff(x, y)
x, y
|
a temporal type |
table
|
nanoival: used in %in%
|
Set operations between nanoival operands allow the
construction of complex interval vectors (i.e. a nanoival
vector can specify any number of inclusions and exclusions of time). Set
operations between nanotime and nanoival allow
to subset time vectors with interval vectors. In addition to the generic
set functions, the function intersect.idx is defined which
returns the indices of the intersection, and the operator
%in% is overloaded for nanotime-nanoival which
returns a logical vector that indicates which elements belong to the
interval vector.
intersect, union, setdiff return
temporal types that are the result of the intersection. For instance,
set operations on two nanoival return a
nanoival, whereas intersection between a
nanoival and a nanotime returns a
nanotime. intersect.idx return a list of
vectors representing the element indices that intersect and
setdiff.idx returns a vector representing the element
indices to be removed.
library("nanotime")
# a vector of 'nanotime' can be subsetted by a 'nanoival' which is equivalent to 'intersect':
one_second <- 1e9
a <- seq(nanotime("2012-12-12 12:12:12+00:00"), length.out=10, by=one_second)
idx <- c(as.nanoival("-2012-12-12 12:12:10+00:00 -> 2012-12-12 12:12:14+00:00-"),
as.nanoival("+2012-12-12 12:12:18+00:00 -> 2012-12-12 12:12:20+00:00+"))
a[idx]
intersect(a, idx)
# 'nanoival' also has the set operations 'union', 'intersect', 'setdiff':
a <- seq(nanotime("2012-12-12 12:12:12+00:00"), length.out=10, by=one_second)
i <- as.nanoival("-2012-12-12 12:12:14+00:00 -> 2012-12-12 12:12:18+00:00-")
setdiff(a, i)
i1 <- as.nanoival("+2012-12-12 12:12:14+00:00 -> 2012-12-12 12:12:17+00:00-")
i2 <- as.nanoival("+2012-12-12 12:12:16+00:00 -> 2012-12-12 12:12:18+00:00-")
union(i1, i2)
# 'intersect.idx' returns the indices of the intersection:
a <- seq(nanotime("2012-12-12 12:12:12+00:00"), length.out=10, by=one_second)
idx <- as.nanoival("+2012-12-12 12:12:14+00:00 -> 2012-12-12 12:12:19+00:00+")
idx_intersect <- intersect.idx(a, idx)
# Intersection can be performed using these indices:
a[idx_intersect$x]
# which is equivalent to:
a[idx]
# The logical vector indicating intersection can be obtained like this:
a %in% idx