Hi guys
thanks for this, it works fine, but I'm not sure the Matrix package does
what I want:
> a = sparseMatrix(i=c(20, 30, 1000000000), j=rep(1, 3), x=c(2.2, 3.3,
4.4))
Error in asMethod(object) :
Cholmod error 'out of memory' at file:../Core/cholmod_memory.c, line 148
Surely an efficient storage mechanism would need only six pieces of
information?
I've been pondering the solution that Henrique suggested, that uses
merge(). This seems to be fine, although it might be possible
to squeeze some efficiency gains by using the fact that
the index vector is always sorted, which migh save some
searching time.
Any thoughts anyone?
best wishes
Robin
Benilton Carvalho wrote:
library(Matrix)
a = sparseMatrix(i=c(20, 30, 100000000), j=rep(1, 3), x=c(2.2, 3.3, 4.4))
b = sparseMatrix(i=c(3, 30), j=rep(1, 2), x=c(0.1, 0.1), dims=dim(a))
theSum = a+b
summary(theSum)
hth,
b
On Sep 8, 2009, at 10:19 AM, Henrique Dallazuanna wrote:
Try this:
abMerge <- merge(a, b, by = 'index', all = TRUE)
list(index = abMerge$index, val = rowSums(abMerge[,2:3], na.rm = TRUE))
On Tue, Sep 8, 2009 at 10:06 AM, Robin Hankin <[email protected]> wrote:
Hi
I deal with long vectors almost all of whose elements are zero.
Typically, the length will be ~5e7 with ~100 nonzero elements.
I want to deal with these objects using a sort of sparse
vector.
The problem is that I want to be able to 'add' two such
vectors.
Toy problem follows. Suppose I have two such objects, 'a' and 'b':
a
$index
[1] 20 30 100000000
$val
[1] 2.2 3.3 4.4
b
$index
[1] 3 30
$val
[1] 0.1 0.1
What I want is the "sum" of these:
AplusB
$index
[1] 3 20 30 100000000
$val
[1] 0.1 2.2 3.4 4.4
See how the value for index=30 (being common to both) is 3.4
(=3.3+0.1). What's the best R idiom to achieve this?
--
Robin K. S. Hankin
Uncertainty Analyst
University of Cambridge
19 Silver Street
Cambridge CB3 9EP
01223-764877
______________________________________________
[email protected] 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.
--
Henrique Dallazuanna
Curitiba-Paraná-Brasil
25° 25' 40" S 49° 16' 22" O
[[alternative HTML version deleted]]
<ATT00001.txt>
--
Robin K. S. Hankin
Uncertainty Analyst
University of Cambridge
19 Silver Street
Cambridge CB3 9EP
01223-764877
______________________________________________
[email protected] 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.