select_rows_byname {matsbyname} | R Documentation |
Select (or de-select) rows of a matrix (or list of matrices) by name
Description
Arguments indicate which rows are to be retained and which are to be removed. For maximum flexibility, arguments are extended regex patterns that are matched against row names.
Usage
select_rows_byname(
a,
retain_pattern = "$^",
remove_pattern = "$^",
ignore.case = FALSE,
perl = FALSE,
fixed = FALSE,
useBytes = FALSE
)
Arguments
a |
A matrix or a list of matrices. |
retain_pattern |
An extended regex or list of extended regular expressions that specifies which rows of |
remove_pattern |
An extended regex or list of extended regular expressions that specifies which rows of |
ignore.case , perl , fixed , useBytes |
Arguments passed to |
Details
If a
is NULL
, NULL
is returned.
Patterns are compared against row names using extended regex.
If no row names of a
match the retain_pattern
, NULL
is returned.
If no row names of a
match the remove_pattern
, m
is returned.
Note that the default retain_pattern
and remove_pattern
("$^")
retain nothing and remove nothing.
Retaining rows takes precedence over removing rows, always.
Some typical patterns are:
"^Electricity$|^Oil$": row names that are EXACTLY "Electricity" or EXACTLY "Oil".
"^Electricity|^Oil": row names that START WITH "Electricity" or START WITH "Oil".
"Electricity|Oil": row names that CONTAIN "Electricity" or CONTAIN "Oil" anywhere within them.
Given a list of row names, a pattern can be constructed easily using RCLabels::make_or_pattern()
.
RCLabels::make_or_pattern()
escapes regex strings using Hmisc::escapeRegex()
.
This function assumes that retain_pattern
and remove_pattern
have already been
suitably escaped.
If the row or column labels contain "[" or "]",
care should be taken to escape those characters.
Hmisc::escapeRegex()
is helpful in such situations.
Note that if all rows are removed from a
, NULL
is returned.
Value
A matrix that is a subset of m
with rows selected by retain_pattern
and remove_pattern
.
Examples
m <- matrix(1:16, ncol = 4, dimnames = list(c(paste0("i", 1:4)), paste0("p", 1:4))) %>%
setrowtype("Industries") %>% setcoltype("Commodities")
select_rows_byname(m,
retain_pattern = RCLabels::make_or_pattern(c("i1", "i4"),
pattern_type = "exact"))
select_rows_byname(m,
remove_pattern = RCLabels::make_or_pattern(c("i1", "i3"),
pattern_type = "exact"))
# Also works for lists and data frames
select_rows_byname(list(m, m), retain_pattern = "^i1$|^i4$")