# [R] sum of unknown number of matrices

John Fox jfox at mcmaster.ca
Wed Jun 4 17:20:48 CEST 2008

```Dear Shubha,

This problem was coincidentally used as an illustration in the Help Desk
column in the current R News.

Actually, the brute-force method of using a loop to accumulate the sum works
quite well; a more elegant alternative, recently brought to my attention by
Kurt Hornik, uses the Reduce() function.

Here's an example:

> matrices <- vector(mode="list", length=10000)
> for (i in 1:10000)
+   matrices[[i]] <- matrix(rnorm(10000), 100, 100)
>
> system.time({
+   S <- matrix(0, 100, 100)
+   for (i in 1:10000) S <- S + matrices[[i]]
+   })
user  system elapsed
0.59    0.00    0.59
>
> system.time(S1 <- Reduce("+", matrices))
user  system elapsed
0.60    0.00    0.59
>
> range(S1 - S)
 0 0

I hope this helps,
John

------------------------------
John Fox, Professor
Department of Sociology
McMaster University
web: socserv.mcmaster.ca/jfox

> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
On
> Behalf Of Shubha Vishwanath Karanth
> Sent: June-04-08 10:54 AM
> To: r-help at stat.math.ethz.ch
> Subject: [R] sum of unknown number of matrices
>
> Hi R,
>
>
>
> I have a list of matrices. I need to get the sum of all the matrices in
> the list.
>
>
>
> Example:
>
> a=b=c=d=matrix(1:4,2,2)
>
> l=list(a,b,c,d)
>
>
>
>
>
> I need:
>
> > a+b+c+d
>
>      [,1] [,2]
>
> [1,]    4   12
>
> [2,]    8   16
>
>
>
> Something like do.call("+",l) is not working...why is this?
>
>
>
>
>
> I may not be knowing the number of matrices in the list...
>
>
>
> Thanks, Shubha
>
>
>
> This e-mail may contain confidential and/or privileged i...{{dropped:13}}
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help