| dgCMatrix-utils {DelayedArray} | R Documentation |
NOTE: These utilities are currently implemented in the DelayedArray package but they should really go somewhere else at some point (e.g. to the MatrixGenerics and sparseMatrixStats packages after they make it into Bioconductor).
## rowsum() and colsum() S4 generics: #rowsum(x, group, reorder=TRUE, ...) #colsum(x, group, reorder=TRUE, ...) ## Default methods: ## S4 method for signature 'ANY' rowsum(x, group, reorder=TRUE, ...) ## S4 method for signature 'ANY' colsum(x, group, reorder=TRUE, ...) ## rowsum() method for dgCMatrix objects: ## S4 method for signature 'dgCMatrix' rowsum(x, group, reorder=TRUE, ...)
x |
A numeric matrix-like object. |
group, reorder, ... |
See |
See ?base::rowsum for the value returned
by the default rowsum method.
The default colsum method returns
t(rowsum(t(x), group, reorder=reorder, ...)).
DelayedMatrix-utils in this package for the rowsum
and colsum methods defined for DelayedMatrix objects.
base::rowsum in the base package for
the default rowsum method.
The Matrix package (from CRAN) where dgCMatrix objects are defined and implemented.
library(Matrix)
randomSparseMatrix <- function(nrow, ncol, sparsity=0.85)
{
m_len <- nrow * ncol
m_data <- runif(m_len) * 50
zidx <- sample(m_len, as.integer(m_len * sparsity))
m_data[zidx] <- 0
matrix(m_data, nrow=nrow, ncol=ncol)
}
m <- randomSparseMatrix(1e5, 800) # dense representation
m0 <- as(m, "dgCMatrix") # sparse representation
group <- sample(20, nrow(m), replace=TRUE)
## 'rowsum(m0)' is about 5x faster than 'rowsum(m)':
rs <- rowsum(m, group)
rs0 <- rowsum(m0, group)
stopifnot(identical(rs, rs0))