Or, for a very slight further reduction in time in
the case of larger matrices/vectors:
I mention this merely to remind new users of the
excellent speed of [t]crossprod().
> -----Original Message-----
> From: [hidden email] [mailto:[hidden email]] On Behalf Of Remko Duursma
> Sent: Tuesday, 1 June 2010 4:04 PM
> To: [hidden email] > 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)?
On 1 June 2010 11:34, Peter Ehlers <[hidden email]> wrote:
> Or, for a very slight further reduction in time in
> the case of larger matrices/vectors:
> as.vector(tcrossprod(V, xyzs))
> I mention this merely to remind new users of the
> excellent speed of [t]crossprod().
> -Peter Ehlers
Thanks, I've been using t(x)%*%y for several years now, and had never
found out there was a faster and more straight-forward function for
this. Perhaps a link to [t]crossprod could be added on the help page