sort_rows_cols: Sorts rows and columns of a matrix

Description Usage Arguments Details Value Examples

View source: R/CompletingMatrices.R

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.