Learn R Programming

qlcMatrix (version 0.9.1)

rowMax: Row and column extremes (sparse matrices)

Description

Compute maxima and minima for all rows or columns of sparse matrices. Optionally also return which elements are the maxima/minima per row/column.

Usage

rowMax(X, which = FALSE, ignore.zero = TRUE)
colMax(X, which = FALSE, ignore.zero = TRUE)

rowMin(X, which = FALSE, ignore.zero = TRUE) colMin(X, which = FALSE, ignore.zero = TRUE)

Arguments

Value

By default, these functions returns a sparseVector with the non-zero maxima or minima. Eventually use as.vector to turn this into a regular vector.

When which = T, the result is a list of two items:max/minthe same sparse vector as described above.whicha sparse pattern matrix of the kind ngCMatrix indicating the position of the extrema. Note that an extreme might occur more than once per row/column. In that case multiple entries in the row/column are indicated.

Details

The basic workhorse of these functions is the `trick': aggregate(x ~ i, data = summary(X), FUN = max) This usage of aggregate can possibly be used for other row- and column-wise summary statistics of sparse matrices.

Examples

Run this code
# rowMax(X, ignore.zero = FALSE) is the same as apply(X, 1, max)
X <- rSparseMatrix(1e4, 1e4, 1e5)
system.time(m1 <- rowMax(X, ignore.zero = FALSE))
system.time(m2 <- apply(X, 1, max))
all.equal(as.vector(m1), m2)

# speed depends most strongly on the number of entries in the matrix
# also some performance loss with size of matrix
# up to 1e5 entries is still reasonably fast

X <- rSparseMatrix(1e7, 1e7, 1e5)
system.time(m <- rowMax(X))

X <- rSparseMatrix(1e7, 1e7, 1e6)
system.time(M <- rowMax(X)) # about ten times as slow

# apply is not feasably on such large matrices
# Error: problem too large...
m <- apply(X, 1, max)

Run the code above in your browser using DataLab