- Amazon Student members save an additional 10% on Textbooks with promo code TEXTBOOK10. Enter code TEXTBOOK10 at checkout. Here's how (restrictions apply)
The Art of R Programming: A Tour of Statistical Software Design Paperback – Oct 15 2011
|New from||Used from|
Special Offers and Product Promotions
Frequently Bought Together
Customers Who Bought This Item Also Bought
No Kindle device required. Download one of the Free Kindle apps to start reading Kindle books on your smartphone, tablet, and computer.
To get the free app, enter your e-mail address or mobile phone number.
About the Author
Norman Matloff, Ph.D., is a Professor of Computer Science at the University of California, Davis. He is the creator of several popular software packages, as well as a number of widely-used Web tutorials on computer topics. He has written articles for the New York Times, the Washington Post, Forbes Magazine, the San Francisco Chronicle, and the Los Angeles Times, among others, and is also the author, with Peter Jay Salzman, of The Art of Debugging (No Starch Press).
What Other Items Do Customers Buy After Viewing This Item?
Top Customer Reviews
Has some typos / mistakes that can cause you to scratch your head sometimes.
Most Helpful Customer Reviews on Amazon.com (beta)
What Matloff does is to lay out the essentials of the R language (or S, if you prefer) in depth but in a readable fashion, with well-chosen examples that reinforce learning about the language itself (as opposed to focusing on statistics or data analysis).
I'm a long-time (12 years) R user, which is my platform for analytics every day, and I have programmed in a variety of languages from C to Perl. I have long missed the fact that there is nothing for R comparable to Kernighan & Ritchie ("K&R", The C Programming Language) or similar programming classics; finally there is. Matloff is not quite as beautiful and elegant as K&R (and to be fair, is not in their position as the language creator) but this book has similar goals and comes reasonably close.
I think there are two primary audiences for this book: those who are learning R from a computer science or programming background; and statisticians and others who use the programming language and want a thorough exposition. In my case, for instance, despite having written perhaps 100k lines of R code over the years, there remained areas where I was uneasy (e.g., exactly how do lists relate to data frames). Matloff sets it all straight, in friendly, readable fashion. Even in rudimentary chapters, I learned shortcuts and miscellaneous functions that are quite useful. The examples throughout are more "CS-like" than statistical, which is highly advantageous for this topic.
In addition to the tutorial content, it is well-suited as a quick reference. It doesn't aim to be comprehensive from a function point of view (which is almost impossible, and what R Help is for), but it is comprehensive from a programming conceptual point of view.
In short, if you program R, and unless you're a member of R-Core, then I believe you'll enjoy this, will learn something, and will refer back to it repeatedly.
Variable scope - Chapter 7
User-defined classes - Ch 9
Debugging - Ch 13
Profiling and performance (mostly, vectorization) - Ch 14
Interfacing with C/C++ and Python - Ch 15
Parallel computation ("pure R" approach using "snow" package, and C++-aided approach using "OpenMP" library) - Ch 16
I have not seen the material of Chapters 15-16 in any other R reference; the other topics have shown up elsewhere - in "R in Nutshell", for example - but get more attention here. The chapters would have been much shorter if written in a "Nutshell" style; however, I do not automatically consider a verbose, user-friendly writing style a negative.
The early chapters introduce R in a way similar to other books - except for (a) eschewing discussion of the language's statistical repertoire, which makes sense given "programming" focus, and (b) showing a greater interest in the "matrix" class - and although they do it quite nicely (this said, let me ask the author to reconsider his "extended examples"), I would not recommend "Art of R Programming" to non-SRPs, and point them to Robert Kabacoff's "R in Action" or (the E-Z version) Paul Teetor's "R Cookbook" instead.
Overall, while the book did not quite click for me - I am a "data analyst" and at present do not have much "need for speed" (cf. C/C++); on the other hand, I would like a firmer grasp on R's OOP, but here, "Art of R Programming" only whets one's appetite - I cannot deny its quality and unique value for budding SRPs. If there was any wavering between four and five stars on my part, the appreciation of how pretty and inexpensive the book is tipped the scales.
However, be warned that the book is not rigorous, either as an introduction or a reference. It is concise, easy to read, and much is driven by case studies to show you how to do things. But it often left me uneasy as a software engineer. For example, it states that R uses "lazy evaluation" when a more accurate statement would be that it is simply evaluates function arguments lazily. The description of the run time object environment is clunky: evaluation contexts, closures, and recursion are treated separately. It does not entirely explain how symbol look up works for functions (you won't learn why "sum <- 1; sum(1,2,3)" will still evaluate to 6). The discussion on object copy-on-change was so vague that I failed to understand how I could use that information.
Okay, so it's not perfect, and it's definitely no K&R. But it's still way better than any other introduction I've seen before. It may be the best way to get started and then go on to the masses of freely available information about R. I wish this book had been available years ago when I first typed "R" at my shell prompt. It would have saved me a lot of pain!
Iterating the main theme, the book is very desultory. Especially when comparing it to a great book like "R Tutorial and Exercise Solution " by Chi Yau, which is organized properly. In the first few chapters of The Art of R Programming the author will lay out and explain some basic concepts and code examples then in the next page he is showing how to manipulate various data frames with 12-20 lines of complex code. I'm not sure what audience is reading introductory chapters and would find this abstruse and erudite code useful at all given the basic chapter concepts. Also the chapter layout itself seems odd as salient and trivial topics get uneven treatment relative to their important in the real world. As a Engineer and a holder of a CS degree myself, it isn't as if the code is too complex per se, its just too complex and superfluous given the topic discussed.
The author would have been much better served saving the fancy coding to advanced topics in which it would have been more relevant later in the book.
I did find, however, the comparisons with C programming annoying in the first part of the book. The author continuously goes on about "if you're a C programmer" and then some comparison to C. I didn't find this helpful (and I am a C programmer) and I think it could have been safely left out. A good example of this is on page 12 where is says "Matrices are indexed using double subscripting, much as in C/C++, although subscripts start from 1 instead of 0." So pretty much not like C/C++. That's a good example of how the C interludes don't help the new reader.
Just occasionally the author gets ahead of himself. Early on in the book he introduces matrices and on page 28 does a matrix addition in the form m + 10:13. He hasn't explained how that addition is going to work.
However, these complaints are pretty minor. The book does a good job of taking you from knowing nothing about R to working with complex programs and data. The chapter on S3 and S4 classes is particularly welcome, but I think it could have been more in depth and earlier in the book. They are an important topic.
Overall this is a very good book to learn R from and has enough depth that the experienced R user will find useful things in the later chapters.
Look for similar items by category
- Books > Computers & Technology > Computer Science > Artificial Intelligence > Computer Mathematics
- Books > Computers & Technology > Programming > Languages & Tools
- Books > Computers & Technology > Software > Mathematical & Statistical
- Books > Professional & Technical > Professional Science > Mathematics > Applied
- Books > Science & Math > Mathematics > Applied > Probability & Statistics
- Books > Textbooks > Computer Science & Information Systems > Programming Languages
- Books > Textbooks > Sciences > Mathematics > Statistics