Hello Gerrit, Thanks. Your proposal works in general, but I get memory allocation errors with my actual 57,000 x 14,000 matrix.
The fix which I now use is to scale the data before I build the matrix; see below. Cheers, Dirk ## Code Start ----------------------------- library(parallel) rowscale <- function(.x) cbind(.x[,1:3], .x[,3] / sum(.x[,3])) y <- split(x = x, f = x[,1]) localSocketCluster <- parallel::makeCluster(spec = 4, type = "SOCK") y <- parallel::parLapply(cl = localSocketCluster, X = y, fun = rowscale) parallel::stopCluster(cl = localSocketCluster) x <- do.call(what = rbind, args = y) ## build the sparse matrix M <- Matrix::sparseMatrix(dims = c(N_ROW, N_COL), i = x[,1], j = x[,2], x = x[,4]) ## Code End ----------------------------- On 16-01-13 03:23 AM, Gerrit Eichner wrote: > Hello, Dirk, > > maybe I'm missing something, but to avoid your for-loop-approach doesn't > > M <- M/Matrix::rowSums(M) > > do what you want? > > Hth -- Gerrit > > --------------------------------------------------------------------- > Dr. Gerrit Eichner Mathematical Institute, Room 212 > gerrit.eich...@math.uni-giessen.de Justus-Liebig-University Giessen > Tel: +49-(0)641-99-32104 Arndtstr. 2, 35392 Giessen, Germany > Fax: +49-(0)641-99-32109 http://www.uni-giessen.de/eichner > --------------------------------------------------------------------- > ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.