Art of R Programming

The Art of R Programming
A Tour of Statistical Software Design
Norman Matloff
October 2011, 400 pp.

R is the world's most popular language for developing statistical software: Archaeologists use it to track the spread of ancient civilizations, drug companies use it to discover which medications are safe and effective, and actuaries use it to assess financial risks and keep economies running smoothly.

The Art of R Programming takes you on a guided tour of software development with R, from basic types and data structures to advanced topics like closures, recursion, and anonymous functions. No statistical knowledge is required, and your programming skills can range from hobbyist to pro.

Along the way, you'll learn about functional and object-oriented programming, running mathematical simulations, and rearranging complex data into simpler, more useful formats. You'll also learn to:

  • Create artful graphs to visualize complex data sets and functions
  • Write more efficient code using parallel R and vectorization
  • Interface R with C/C++ and Python for increased speed or functionality
  • Find new R packages for text analysis, image manipulation, and more
  • Squash annoying bugs with advanced debugging techniques

Whether you're designing aircraft, forecasting the weather, or you just need to tame your data, The Art of R Programming is your guide to harnessing the power of statistical computing.

Author Bio 

Norman Matloff is a professor of computer science (and was formerly a professor of statistics) at the University of California, Davis. His research interests include parallel processing and statistical regression, and he is the author of a number of widely-used Web tutorials on software development. He has written articles for the New York Times, the Washington Post, Forbes Magazine, and the Los Angeles Times, and is the co-author of The Art of Debugging (No Starch Press).

Table of contents 


Chapter 1: Getting Started
Chapter 2: Vectors
Chapter 3: Matrices and Arrays
Chapter 4: Lists
Chapter 5: Data Frames
Chapter 6: Factors and Tables
Chapter 7: R Programming Structures
Chapter 8: Doing Math and Simulations in R
Chapter 9: Object-Oriented Programming
Chapter 10: Input/Output
Chapter 11: String Manipulation
Chapter 12: Graphics
Chapter 13: Debugging
Chapter 14: Performance Enhancement: Tradeoffs in Time and Space
Chapter 15: Interfacing R to Other Languages
Chapter 16: Parallel R

Appendix A: Installing R
Appendix B: Installing and Using Packages

View the detailed Table of Contents (PDF)

View the Index (PDF)


"If a person really wants to be able to speak the R language and become a competent R programmer then . . . one can find no better guide than Norman Matloff's The Art of R Programming."
Joe Rickert, Revolution Analytics (Read More)

"The book I'd recommend for someone wanting to learn R, especially for someone with more experience in programming than statistics."
John D. Cook, The Endeavor (Read More)

"Good from cover to cover. Enough depth that the experienced R user will find useful things in the later chapters."
John Graham-Cumming

“If you are serious about learning R . . . The Art of R Programming will be beneficial to you.”
Paolo Sonego, One R Tip a Day (Read More)

"Makes it look easy for those scientists who need to make numerical models based on statistical analysis. Serious stuff for people who are already R programmers, but it has a lot of value for entry level folks too."
Hank Campbell, Science 2.0 (Read More)

"If you need to do statistical work as a programmer I highly recommend buying it."
Bryan Bell, Math and More (Read More)

"An R programming book that starts from the beginning. If you have at least a vague idea of what programming is, you should find The Art of R Programming useful. I’m keeping this one."
Nathan Yau, FlowingData (Read More)


Page 65:
The block of code at the bottom of the page should read as follows:

# adds random noise to img, at the range rows,cols of img; img and the
# return value are both objects of class pixmap; the parameter q
# controls the weight of the noise, with the result being 1-q times the
# original image plus q times the random noise
blurpart lrows lcols newimg randomnoise [email protected][rows,cols] return(newimg)

Page 66:
The first line of code which reads:
[email protected]

Should instead read:
[email protected][rows,cols]