R: Extracts one cell per row (column) from a matrix

rowCollapse {matrixStats} | R Documentation

## Extracts one cell per row (column) from a matrix

### Description

Extracts one cell per row (column) from a matrix. The implementation is optimized for memory and speed.

### Usage

    rowCollapse(x, idxs, rows = NULL, dim. = dim(x), ...)

    colCollapse(x, idxs, cols = NULL, dim. = dim(x), ...)

### Arguments

`x` | An NxK `matrix`.
`idxs` | An index `vector` of (maximum) length N (K) specifying the columns (rows) to be extracted.
`rows, cols` | A `vector` indicating subset of rows (and/or columns) to operate over. If `NULL`, no subsetting is done.
`dim.` | An `integer` `vector` of length two specifying the dimension of `x`, also when not a `matrix`.
`...` | Not used.

### Value

Returns a `vector` of length N (K).

### Author(s)

Henrik Bengtsson

### See Also

Matrix indexing to index elements in matrices and arrays, cf. `[`().

### Examples

    x <- matrix(1:27, ncol = 3)

    y <- rowCollapse(x, 1)
    stopifnot(identical(y, x[, 1]))

    y <- rowCollapse(x, 2)
    stopifnot(identical(y, x[, 2]))

    y <- rowCollapse(x, c(1, 1, 1, 1, 1, 3, 3, 3, 3))
    stopifnot(identical(y, c(x[1:5, 1], x[6:9, 3])))

    y <- rowCollapse(x, 1:3)
    print(y)
    y_truth <- c(x[1, 1], x[2, 2], x[3, 3], x[4, 1], x[5, 2],
                 x[6, 3], x[7, 1], x[8, 2], x[9, 3])
    stopifnot(identical(y, y_truth))

[Package matrixStats version 0.54.0 Index]