[R] Alternative to apply in base R

Charles C. Berry ccberry at ucsd.edu
Tue Nov 8 17:55:02 CET 2016


On Tue, 8 Nov 2016, Doran, Harold wrote:

> Without reaching out to another package in R, I wonder what the best way is to speed enhance the following toy example? Over the years I have become very comfortable with the family of apply functions and generally not good at finding an improvement for speed.
>
> This toy example is small, but my real data has many millions of rows 
> and the same operations is repeated many times and so finding a less 
> expensive alternative would be helpful.
>
> mm <- matrix(rnorm(100), ncol = 10)
> rn <- apply(mm, 1, prod)


If the real example has only 10 columns, try this:

> y <- mm[,1]
> for (i in 2:10) y[] <- y*mm[,i]
> all.equal(y,rn)

If it has many more columns, I would `reach out' to the inline package and 
write 3 lines of C or Fortran to do the operation.

HTH,

Chuck



More information about the R-help mailing list