R: Ordering and Permuting functions for big.matrix" and matrix"...

morder {bigmemory} | R Documentation

## Ordering and Permuting functions for `big.matrix'' and` matrix” objects

### Description

The `morder` function returns a permutation of row indices which can be used to rearrange an object according to the values in the specified columns (a multi-column ordering). The `mpermute` function actually reorders the rows of a `big.matrix` or `matrix` based on an order vector or a desired ordering on a set of columns.

### Usage

    morder(x, cols, na.last = TRUE, decreasing = FALSE)

    morderCols(x, rows, na.last = TRUE, decreasing = FALSE)

    mpermute(x, order = NULL, cols = NULL, allow.duplicates = FALSE, ...)

    mpermuteCols(x, order = NULL, rows = NULL, allow.duplicates = FALSE, ...)

### Arguments

`x` | A `big.matrix` or `matrix` object with numeric values.
`cols` | The columns of `x` to get the ordering for or reorder on
`na.last` | for controlling the treatment of `NA`s. If `TRUE`, missing values in the data are put last; if `FALSE`, they are put first; if `NA`, they are removed.
`decreasing` | logical. Should the sort order be increasing or decreasing?
`rows` | The rows of `x` to get the ordering for or reorder on
`order` | A vector specifying the reordering of rows, i.e. the result of a call to `order` or `morder`.
`allow.duplicates` | ff `TRUE`, allows a row to be duplicated in the resulting `big.matrix` or `matrix` (i.e. in this case, `order` would not need to be a permutation of `1:nrow(x)`).
`...` | optional parameters to pass to `morder` when `cols` is specified instead of just using `order`.

### Details

The `morder` function behaves similar to `order`, returning a permutation of `1:nrow(x)` which rearranges objects according to the values in the specified columns. However, `morder` takes a `big.matrix` or an R `matrix` (with numeric type) and a set of columns (`cols`) with which to determine the ordering; `morder` does not incur the same memory overhead required by `order`, and runs more quickly.

The `mpermute` function changes the row ordering of a `big.matrix` or `matrix` based on a vector `order` or an ordering based on a set of columns specified by `cols`. It should be noted that this function has side-effects, that is `x` is changed when this function is called.

### Value

`morder` returns an ordering vector. `mpermute` returns nothing but does change the contents of `x`. This type of a side-effect is generally frowned upon in R, but we “break” the rules here to avoid memory overhead and improve performance.

### Author(s)

Michael J. Kane <bigmemoryauthors@gmail.com>

### See Also

`order`

### Examples

    m = matrix(as.double(as.matrix(iris)), nrow=nrow(iris))
    morder(m, 1)
    order(m[,1])

    m[order(m[,1]), 2]
    mpermute(m, cols=1)
    m[,2]

[Package bigmemory version 4.5.36 Index]