Benchmarking matrix creation

[This article was first published on is.R(), and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

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.

To leave a comment for the author, please follow the link and comment on their blog: is.R(). offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

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)