sort_rows_cols: Sorts rows and columns of a matrix In matsbyname: An Implementation of Matrix Mathematics

Description

Checks that row names are unique and that column names are unique. Then, sorts the rows and columns in a way that ensures any other matrix with the same row and column names will have the same order.

Usage

 `1` ```sort_rows_cols(a, margin = c(1, 2), roworder = NA, colorder = NA) ```

Arguments

 `a` a matrix or data frame whose rows and columns are to be sorted `margin` specifies the subscript(s) in `a` over which sorting will occur. `margin` has nearly the same semantic meaning as in `apply`. For rows only, give `1`; for columns only, give `2`; for both rows and columns, give `c(1,2)`, the default value. `roworder` specifies the order for rows with default `sort(rownames(a))`. If `NA` (the default), default sort order is used. Unspecified rows are removed from the output, thus providing a way to delete rows from `a`. Extraneous row names (row names in `roworder` that do not appear in `a`) are ignored. `colorder` specifies the order for rows with default `sort(colnames(a))`. If `NA` (the default), default sort order is used. Unspecified columns are removed from the output, thus providing a way to delete columns from `a`. Extraneous column names (column names in `colorder` that do not appear in `a`) are ignored.

Details

Default sort order is given by `base::sort()` with `decreasing = FALSE`.

Value

A modified version of `a` with sorted rows and columns

Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23``` ```m <- matrix(c(1:6), nrow=3, dimnames = list(c("r3", "r5", "r1"), c("c4", "c2"))) sort_rows_cols(m) sort_rows_cols(t(m)) sort_rows_cols(m, margin=1) # Sorts rows sort_rows_cols(m, margin=2) # Sorts columns v <- matrix(c(1:5), ncol=1, dimnames=list(rev(paste0("r", 1:5)), "c1")) # Column vector sort_rows_cols(v) sort_rows_cols(v, margin = 1) # Sorts rows sort_rows_cols(v, margin = 2) # No effect: only one column r <- matrix(c(1:4), nrow=1, dimnames=list("r1", rev(paste0("c", 1:4)))) # Row vector sort_rows_cols(r) # Sorts columns n <- matrix(c(1,2), nrow = 1, dimnames = list(NULL, c("c2", "c1"))) # No row name sort_rows_cols(n) # Sorts columns, because only one row. # Also works with lists sort_rows_cols(list(m,m)) # Sorts rows and columns for both m's. # Sort rows only for first one, sort rows and columns for second one. # Row order is applied to all m's. Column order is natural. sort_rows_cols(a = list(m,m), margin = 1, roworder = list(c("r5", "r3", "r1"))) # Columns are sorted as default, because no colorder is given. # roworder is ignored. sort_rows_cols(a = list(m,m), margin = 2, roworder = list(c("r5", "r3", "r1"))) # Both columns and rows sorted, rows by the list, columns in natural order. sort_rows_cols(a = list(m,m), margin = c(1,2), roworder = list(c("r5", "r3", "r1"))) ```

matsbyname documentation built on July 8, 2020, 6:55 p.m.