How to speed up loops in R

November 28, 2011

(This article was first published on Revolutions, and kindly contributed to R-bloggers)

As with any language, there are often several ways to code up the solution to a programming problem in R. If performance of the code is important (i.e. it's something you plan to run many times, or with a lot of data), how you code the solution can often have a big impact on how fast it runs. For example, the RLangTip Twitter feed offered this tip last month:


The Me Nugget blog has practical example of this principle in action: in some simple tests, dynamically resizing a matrix (extending it with the rbind function) was more than 150x slower than assigning into an matrix with the dimensions pre-set. (The reason for this is that every time the matrix is extended, an entirely new block of memory must be assigned for the new, larger matrix and the data copied over. So don't do that.) Interestingly, the example shows that extending a list doesn't incur the same penalties — in R, each element of a list gets its own block of memory. So if you're not sure in advance how many elements you need to store, use a list, and then collect the results at the end with sapply or similar.

Me Nugget: Another aspect of speeding up loops in R

To leave a comment for the author, please follow the link and comment on their blog: Revolutions. offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...

If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Tags: ,

Comments are closed.


Mango solutions

RStudio homepage

Zero Inflated Models and Generalized Linear Mixed Models with R

Dommino data lab

Quantide: statistical consulting and training



CRC R books series

Six Sigma Online Training

Contact us if you wish to help support R-bloggers, and place your banner here.

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)