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.

select_rows_byname(a, retain_pattern = "$^", remove_pattern = "$^")

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

remove_pattern

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

Value

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

Details

If a is NULL, NULL is returned.

Patterns are compared against row names using extended regex. If no row names of m match the retain_pattern, NULL is returned. If no row names of m 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 the make_pattern function. make_pattern escapes regex strings using Hmisc::escapeRegex(). This function assumes that retain_pattern and remove_pattern have already been suitably escaped.

Note that if all rows 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_rows_byname(m, retain_pattern = make_pattern(c("i1", "i4"), pattern_type = "exact"))
#> p1 p2 p3 p4 #> i1 1 5 9 13 #> i4 4 8 12 16 #> attr(,"rowtype") #> [1] "Industries" #> attr(,"coltype") #> [1] "Commodities"
select_rows_byname(m, remove_pattern = make_pattern(c("i1", "i3"), pattern_type = "exact"))
#> p1 p2 p3 p4 #> i2 2 6 10 14 #> i4 4 8 12 16 #> attr(,"rowtype") #> [1] "Industries" #> attr(,"coltype") #> [1] "Commodities"
# Also works for lists and data frames select_rows_byname(list(m,m), retain_pattern = "^i1$|^i4$")
#> [[1]] #> p1 p2 p3 p4 #> i1 1 5 9 13 #> i4 4 8 12 16 #> attr(,"rowtype") #> [1] "Industries" #> attr(,"coltype") #> [1] "Commodities" #> #> [[2]] #> p1 p2 p3 p4 #> i1 1 5 9 13 #> i4 4 8 12 16 #> attr(,"rowtype") #> [1] "Industries" #> attr(,"coltype") #> [1] "Commodities" #>