Computing sums of the columns of an array
-----Original Message----- From: r-help-bounces at stat.math.ethz.ch [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Uwe Ligges Sent: Friday, August 05, 2005 12:44 PM To: Duncan Murdoch Cc: r-help at stat.math.ethz.ch Subject: Re: [R] Computing sums of the columns of an array Duncan Murdoch wrote:
On 8/5/2005 12:16 PM, Martin C. Martin wrote:
Hi, I have a 5x731 array A, and I want to compute the sums of
the columns.
Currently I do: apply(A, 2, sum) But it turns out, this is slow: 70% of my CPU time is spent
here, even
though there are many complicated steps in my computation. Is there a faster way?
You'd probably do better with matrix multiplication: rep(1, nrow(A)) %*% A
No, better use colSums(), which has been optimized for this purpose: A <- matrix(seq(1, 10000000), ncol=10000) system.time(colSums(A)) # ~ 0.1 sec. system.time(rep(1, nrow(A)) %*% A) # ~ 0.5 sec.
With the dimension that Martin stated, I don't see much difference:
A <- matrix(runif(5 * 731), 5) system.time(replicate(1e4, rep(1, nrow(A)) %*% A), gcFirst=TRUE)
[1] 5.28 0.13 5.46 NA NA
system.time(replicate(1e4, rep(1, nrow(A)) %*% A), gcFirst=TRUE)
[1] 1.99 0.20 2.22 NA NA
system.time(replicate(1e4, rep(1, nrow(A)) %*% A), gcFirst=TRUE)
[1] 1.97 0.25 2.28 NA NA
system.time(replicate(1e4, rep(1, nrow(A)) %*% A), gcFirst=TRUE)
[1] 1.90 0.20 2.16 NA NA
system.time(replicate(1e4, colSums(A)), gcFirst=TRUE)
[1] 1.53 0.22 1.75 NA NA
system.time(replicate(1e4, colSums(A)), gcFirst=TRUE)
[1] 1.53 0.19 1.72 NA NA
system.time(replicate(1e4, colSums(A)), gcFirst=TRUE)
[1] 1.51 0.19 1.70 NA NA
system.time(replicate(1e4, colSums(A)), gcFirst=TRUE)
[1] 1.49 0.25 1.79 NA NA However, I don't understand why the first try took so much longer. Andy
Uwe Ligges
Duncan Murdoch
______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html ______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html