[R] Alternative to apply in base R
David Winsemius
dwinsemius at comcast.net
Tue Nov 8 18:04:39 CET 2016
> On Nov 8, 2016, at 7:57 AM, Doran, Harold <HDoran at air.org> 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)
I believe you will find that a for-loop is faster.
library(microbenchmark)
help(pac=microbenchmark)
microbenchmark( forloop={ y = mm[,1]; for (i in 2:dim(mm)[2]) y=mm[,i]},
apply = apply(mm,2,prod) )
+----------
Unit: microseconds
expr min lq mean median uq max neval cld
forloop 10.735 11.6450 15.00425 13.1295 13.7455 115.600 100 a
apply 60.775 63.2025 71.95027 64.4530 71.3525 209.309 100 b
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
David Winsemius
Alameda, CA, USA
More information about the R-help
mailing list