Sometimes it is useful to take a vector, or one column/row of a matrix, and build a new matrix of identical copies of that vector. There are lots of different ways to do this, but I just discovered a new, and very straightforward way to do this with matrix algebra, using the outer() function.

However, I wanted to see whether this new approach was really as fast as I thought it would be, so I wrote up a couple of different functions, all of which take the same input and produce the same output, and used the rbenchmark package to compare their speed. rbenchmark is extremely simple to use, and if you have any function that you expect to be applying hundreds or thousands of times, it’s worth trying to find a fast method to do it.

As you can see from the plot above, the outer()-based function was consistently fast, even as I increased the number of replications. Also, I confirmed for myself the oft-repeated advice to pre-allocate a matrix or vector when building up entries in a loop, rather than building the matrix as the loop progresses. The latter approach (simpleLoop) involves making a new copy of the matrix every iteration, which is indeed very slow.

*Related*

To

**leave a comment** for the author, please follow the link and comment on his blog:

** is.R()**.

R-bloggers.com offers

**daily e-mail updates** about

R news and

tutorials on topics such as: 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:** benchmark, ggplot2, rstats