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 <rk...@cam.ac.uk> 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

______________________________________________
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.




--
Henrique Dallazuanna
Curitiba-Paraná-Brasil
25° 25' 40" S 49° 16' 22" O

       [[alternative HTML version deleted]]

<ATT00001.txt>

______________________________________________
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.

Reply via email to