[R] Matrix package: band matrix
maechler at stat.math.ethz.ch
Fri Feb 20 16:04:28 CET 2009
>>>>> "TL" == Thomas Lumley <tlumley at u.washington.edu>
>>>>> on Fri, 20 Feb 2009 05:49:10 -0800 (PST) writes:
TL> On Fri, 20 Feb 2009, David Winsemius wrote:
>> If you can tolerate the subdiagonal and superdiagonal zero elements being
>> populated, then perhaps this is useful. If there is a subset function as you
>> suggest, then perhaps further reduction would be feasible from this as a
>> starting point. At least it would reduce the size from 10^5 x 10^5 to 10^5 x 3:
>> xxx <- data.frame(x1 =1:5, y1=c(0,6,0,7,0) )
>> M= Matrix(0,5,5)
>> M[row(M) == col(M)] <- xxx$x1
>> M[row(M)-1 == col(M)] <- xxx$y1[1:(length(xxx$y1)-1)]
>> M[row(M) == col(M)-1] <- xxx$y1[1:(length(xxx$y1)-1)]
TL> That provides the right structure, but row(M) and col(M) are dense matrices with 10^10 elements, so it still uses too much memory.
Yes, definitely, thank you, David, anyway.
I'll work out a nice solution, (but am currently busy with
something else, so will not be within the next hour).
For a future version of Matrix, I'd really like a nice user
interface, i.e., function, for constructing band matrices; this
has been on my TODO list, at least mentally, for quite a while,
and as I had never gotten close to use case, never gained enough
Maybe I can get some suggestions now on desired functionality of
such a function, bandMatrix(.) say ?
It probably should have an option for specifying symmetric
vs. "general" band matrices, something that the "corresponding"
Matlab function [ spdiags() ] does not.
Martin Maechler, ETH Zurich
TL> Thomas Lumley Assoc. Professor, Biostatistics
TL> tlumley at u.washington.edu University of Washington, Seattle
TL> R-help at r-project.org mailing list
TL> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
TL> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help