Chapter 3. Efficient Programming

Many people who use R would not describe themselves as programmers. Instead, they tend to have advanced domain-level knowledge and understand standard R data structures such as vectors and data frames, but have little formal training in computing. Sound familiar? In that case, this chapter is for you.

In this chapter, we will discuss “big picture” programming techniques. We cover general concepts and R programming techniques about code optimization, before describing idiomatic programming structures. We conclude the chapter by examining relatively easy ways of speeding up code using the compiler package and parallel processing using multiple CPUs.

Prerequisites

In this chapter, we introduce two new packages, compiler and memoise. The compiler package comes with R, so it will already be installed.

library("compiler")
library("memoise")

We also use the pryr and microbenchmark packages in the exercises.

Top Five Tips for Efficient Programming

  1. Be careful never to grow vectors.

  2. Vectorize code whenever possible.

  3. Use factors when appropriate.

  4. Avoid unnecessary computation by caching variables.

  5. Byte compile packages for an easy performance boost.

General Advice

Low-level languages like C and Fortran demand more from the programmer. They force you to declare the type of every variable used, give you the burdensome responsibility of memory management, and have to be compiled. The advantage of such languages, compared with R, is that they are faster ...

Get Efficient R Programming now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.