Skip to contents

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 m to retain. Default pattern ("$^") retains nothing.

remove_pattern

an extended regex or list of extended regular expressions that specifies which columns of m to remove. Default pattern ("$^") removes nothing.

ignore.case, perl, fixed, useBytes

Arguments passed to grep().

Value

a matrix that is a subset of a with columns selected by retain_pattern and remove_pattern.

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.

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"))
#>    p1 p4
#> i1  1 13
#> i2  2 14
#> i3  3 15
#> i4  4 16
#> attr(,"rowtype")
#> [1] "Industries"
#> attr(,"coltype")
#> [1] "Commodities"
select_cols_byname(m, 
                   remove_pattern = RCLabels::make_or_pattern(c("p1", "p3"), 
                   pattern_type = "exact"))
#>    p2 p4
#> i1  5 13
#> i2  6 14
#> i3  7 15
#> i4  8 16
#> attr(,"rowtype")
#> [1] "Industries"
#> attr(,"coltype")
#> [1] "Commodities"
# Also works for lists and data frames
select_cols_byname(list(m,m), retain_pattern = "^p1$|^p4$")
#> [[1]]
#>    p1 p4
#> i1  1 13
#> i2  2 14
#> i3  3 15
#> i4  4 16
#> attr(,"rowtype")
#> [1] "Industries"
#> attr(,"coltype")
#> [1] "Commodities"
#> 
#> [[2]]
#>    p1 p4
#> i1  1 13
#> i2  2 14
#> i3  3 15
#> i4  4 16
#> attr(,"rowtype")
#> [1] "Industries"
#> attr(,"coltype")
#> [1] "Commodities"
#>