>>>>> Stefan Evert <stefa...@collocations.de> >>>>> on Fri, 25 Apr 2014 09:09:31 +0200 writes:
> On 24 Apr 2014, at 23:56, Greg Snow <538...@gmail.com> wrote: >> library(Matrix) >> >> adjM <- Matrix(0,nrow=10,ncol=10) >> >> locs <- cbind( sample(1:10), sample(1:10) ) >> vals <- rnorm(10) >> >> adjM[ locs ] <- vals > ... and once you've got your data in this format, why not construct the sparse matrix directly? > adjM <- sparseMatrix(i = locs[,1], j = locs[,2], x = vals) > I've found this to be very efficient and have used it with sparse matrices containing up to around 100 million nonzero entries. Yes, indeed, thank you Stefan! Let me reiterate : __ Unless you can use special constructors such as __ __ Diagonal() # diagonal matrices __ bdiag() # block diagonal matrices __ bandSparse() # "banded diagonal" matrices __ kronecker(a, b) # where a or b are sparse __ __ (and maybe another one I forgot) __ __ *the* way to efficiently construct large sparse matrices is __ sparseMatrix() __ or sometimes its alternative / precursor spMatrix(). __ __ Matrix(d, ...., sparse=TRUE) __ __ is nice and fine only for relatively *small* matrices, __ as it really works from a dense original 'd' (directly or via replication) > Hope this helps, I do hope, too. I'm very happy for suggestions on how we as Matrix authors could make this better known. Recently, someone proposed to make the 'rsparseMatrix()' utility function from help(sparseMatrix) into an "official" Matrix package function. If I did that, I could start using rsparseMatrix() in typical examples rather than the current often use of Matrix() or as(<traditional matrix>, "sparseMatrix") both of which are perfect for the small examples that are typical for help files. Martin Maechler, ETH Zurich ______________________________________________ R-help@r-project.org mailing list 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.