Skip to content
Prev 75064 / 398502 Next

Computing sums of the columns of an array

On 8/5/2005 12:43 PM, Uwe Ligges wrote:
I didn't claim my solution was the best, only better. :-)

One point of interest:  I think your example exaggerates the difference 
by using a matrix of integers.  On my machine I get a ratio something 
like yours with the same example

 > A <- matrix(seq(1, 10000000), ncol=10000)
 >   system.time(colSums(A))
[1] 0.08 0.00 0.08   NA   NA
 >   system.time(rep(1, nrow(A)) %*% A)
[1] 0.25 0.01 0.23   NA   NA

but if I make A floating point, there's much less difference:

 > A <- matrix(as.numeric(seq(1, 10000000)), ncol=10000)
 >   system.time(colSums(A))
[1] 0.09 0.00 0.09   NA   NA
 >   system.time(rep(1, nrow(A)) %*% A)
[1] 0.11 0.00 0.12   NA   NA

Still, colSums is the winner in both cases.

Duncan Murdoch