drylab:merge_sparse_matrices
Quickly unite multiple sparse matrices in R
By Kevin Leiss
The matrices need to have col- and rownames.
merge.sparse <- function(...) { cnnew <- character() rnnew <- character() x <- vector() i <- numeric() j <- numeric() icount <- 1 for (M in list(...)) { cat("Merged", icount, "matrices\n") cnold <- colnames(M) rnold <- rownames(M) cnnew <- union(cnnew,cnold) rnnew <- union(rnnew,rnold) cindnew <- match(cnold,cnnew) rindnew <- match(rnold,rnnew) ind <- unname(which(M != 0,arr.ind=T)) i <- c(i,rindnew[ind[,1]]) j <- c(j,cindnew[ind[,2]]) x <- c(x,M@x) icount <- icount +1 } sparseMatrix(i=i,j=j,x=x,dims=c(length(rnnew),length(cnnew)),dimnames=list(rnnew,cnnew)) }
/opt/bitnami/dokuwiki/data/pages/drylab/merge_sparse_matrices.txt · Last modified: 2024/04/18 15:29 by ntrost