[R] Faster matrix operation?

Bill.Venables at csiro.au Bill.Venables at csiro.au
Tue Jun 1 08:16:25 CEST 2010

> xyzs <- matrix(rnorm(3*100000,0,1),ncol=3)
> V <- c(2,3,4)
> system.time(vx <- apply(t(xyzs) * V, 2 ,sum))
   user  system elapsed 
   1.06    0.02    1.08 
> system.time(wx <- as.vector(xyzs %*% V))
   user  system elapsed 
      0       0       0 
> all.equal(vx, wx)
[1] TRUE

-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Remko Duursma
Sent: Tuesday, 1 June 2010 4:04 PM
To: r-help at r-project.org
Subject: [R] Faster matrix operation?

Dear R-helpers,

I have a three-column matrix with lots of rows:

xyzs <- matrix(rnorm(3*100000,0,1),ncol=3)

# And I am multiplying it with some vector V, and summing the rows
(columns after t()) in this way:
V <- c(2,3,4)
system.time(vx <- apply(t(xyzs) * V, 2 ,sum))

Ok, this does not take long (0.9 sec on my machine), but I have to do
this lots of times, with frequently larger matrices.

Is there a way to significantly speed this up, apart from writing it
in Fortran or C and calling it from within R (which is what I am
planning unless there is an alternative)?


Remko Duursma
Research Lecturer

Centre for Plants and the Environment
University of Western Sydney
Hawkesbury Campus
Richmond NSW 2753

Dept of Biological Science
Macquarie University
North Ryde NSW 2109

Mobile: +61 (0)422 096908

R-help at r-project.org mailing list
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

More information about the R-help mailing list