select_cols_byname {matsbyname} | R Documentation |
Select columns of a matrix (or list of matrices) by name
Description
Arguments indicate which columns are to be retained and which are to be removed. For maximum flexibility, arguments are extended regex patterns that are matched against column names.
Usage
select_cols_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 columns of |
remove_pattern |
an extended regex or list of extended regular expressions that specifies which columns of |
ignore.case , perl , fixed , useBytes |
Arguments passed to |
Details
If a
is NULL
, NULL
is returned.
Patterns are compared against column names using extended regex.
If no column names of a
match the retain_pattern
, NULL
is returned.
If no column names of a
match the remove_pattern
, a
is returned.
Retaining columns takes precedence over removing columns, always.
Some typical patterns are:
"^Electricity$|^Oil$": column names that are EXACTLY "Electricity" or "Oil".
"^Electricity|^Oil": column names that START WITH "Electricity" or "Oil".
"Electricity|Oil": column names that CONTAIN "Electricity" or "Oil" anywhere within them.
Given a list of column names, a pattern can be constructed easily using the make_pattern
function.
RCLabels::make_or_pattern()
escapes regex strings using Hmisc::escaprRegex()
.
This function assumes that retain_pattern
and remove_pattern
have already been
suitably escaped.
Note that the default retain_pattern
and remove_pattern
("$^")
retain nothing and remove nothing.
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 columns are removed from a
, NULL
is returned.
Value
a matrix that is a subset of a
with columns 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_cols_byname(m,
retain_pattern = RCLabels::make_or_pattern(c("p1", "p4"),
pattern_type = "exact"))
select_cols_byname(m,
remove_pattern = RCLabels::make_or_pattern(c("p1", "p3"),
pattern_type = "exact"))
# Also works for lists and data frames
select_cols_byname(list(m,m), retain_pattern = "^p1$|^p4$")