[.epicontacts {epicontacts} | R Documentation |
Subset epicontacts objects based on case identifiers
Description
The "[" operator can be used to subset epicontacts
objects,
retaining a specified set of case identifiers (i
for the linelist,
j
for contacts). Note that unlike most classical R objects, there is
no replacement method for epicontacts
objects, i.e. no
operations such as foo[i] <- bar
.
Usage
## S3 method for class 'epicontacts'
x[
i,
j,
k = TRUE,
l = TRUE,
contacts = c("both", "either", "from", "to"),
...
]
Arguments
x |
An |
i |
A character vector containing case ID to be retained in the
linelist; alternatively, an integer or logical vector used to subset the
rows of the |
j |
A character vector containing case ID to be retained in the
contacts; alternatively, an integer or logical vector used to subset
the rows of the |
k |
An integer, logical, or character vector subsetting the
supplementary columns of |
l |
An integer, logical, or character vector subsetting the
supplementary columns of |
contacts |
A character string indicating the rules for retaining
contacts when |
... |
Not used (there for compatibility with generic). |
Details
Details on the 'contacts' argument; possible values are:
'both': contacts are retained only if both cases are in
j
'either': contacts are retained if at least one of the cases is in
j
'from': contacts are retained only if the source ('from') is in
j
'to': contacts are retained only if the recipient ('to') is in
j
Author(s)
Thibaut Jombart (thibautjombart@gmail.com)
See Also
thin
to retain matching cases in linelist or contacts.
Examples
if (require(outbreaks)) {
## build data
x <- make_epicontacts(ebola_sim$linelist, ebola_sim$contacts,
id = "case_id", to = "case_id", from = "infector",
directed = TRUE)
## subset first 10 linelist cases
x[1:10]
## same, remove contacts
x[1:10, j = FALSE]
## subset first 10 contacts
x[j = 1:10]
## remove the metadata
x[k = FALSE, j = FALSE]
## keep contacts where both cases are in linelist
x[j = get_id(x, "linelist"), contacts = "both"]
## keep contacts from a specific case '916d0a'
x[j = "916d0a", contacts = "from"]
## more complex: keep all cases and contacts with > 4 secondary contacts
## i) find cases to keep
temp <- table(x$contacts$from)
temp[temp > 4]
to.keep <- names(temp)[temp > 4]
to.keep
## subset the contacts
y <- x[j = to.keep, contacts = "either"]
y
## keep only relevant entries in the linelist
y <- thin(y)
## visualise result
plot(y)
}