Acknowledgments; Introduction; Why Use R for Your Statistical Work?; Whom Is This Book For?; My Own Background; Chapter 1: Getting Started; 1.1 How to Run R; 1.2 A First R Session; 1.3 Introduction to Functions; 1.4 Preview of Some Important R Data Structures; 1.5 Extended Example: Regression Analysis of Exam Grades; 1.6 Startup and Shutdown; 1.7 Getting Help; Chapter 2: Vectors; 2.1 Scalars, Vectors, Arrays, and Matrices; 2.2 Declarations; 2.3 Recycling; 2.4 Common Vector Operations; 2.5 Using all() and any(); 2.6 Vectorized Operations; 2.7 NA and NULL Values; 2.8 Filtering; 2.9 A Vectorized if-then-else: The ifelse() Function; 2.10 Testing Vector Equality; 2.11 Vector Element Names; 2.12 More on c(); Chapter 3: Matrices and Arrays; 3.1 Creating Matrices; 3.2 General Matrix Operations; 3.3 Applying Functions to Matrix Rows and Columns; 3.4 Adding and Deleting Matrix Rows and Columns; 3.5 More on the Vector/Matrix Distinction; 3.6 Avoiding Unintended Dimension Reduction; 3.7 Naming Matrix Rows and Columns; 3.8 Higher-Dimensional Arrays; Chapter 4: Lists; 4.1 Creating Lists; 4.2 General List Operations; 4.3 Accessing List Components and Values; 4.4 Applying Functions to Lists; 4.5 Recursive Lists; Chapter 5: Data Frames; 5.1 Creating Data Frames; 5.2 Other Matrix-Like Operations; 5.3 Merging Data Frames; 5.4 Applying Functions to Data Frames; Chapter 6: Factors and Tables; 6.1 Factors and Levels; 6.2 Common Functions Used with Factors; 6.3 Working with Tables; 6.4 Other Factor- and Table-Related Functions; Chapter 7: R Programming Structures; 7.1 Control Statements; 7.2 Arithmetic and Boolean Operators and Values; 7.3 Default Values for Arguments; 7.4 Return Values; 7.5 Functions Are Objects; 7.6 Environment and Scope Issues; 7.7 No Pointers in R; 7.8 Writing Upstairs; 7.9 Recursion; 7.10 Replacement Functions; 7.11 Tools for Composing Function Code; 7.12 Writing Your Own Binary Operations; 7.13 Anonymous Functions; Chapter 8: Doing Math and Simulations in R; 8.1 Math Functions; 8.2 Functions for Statistical Distributions; 8.3 Sorting; 8.4 Linear Algebra Operations on Vectors and Matrices; 8.5 Set Operations; 8.6 Simulation Programming in R; Chapter 9: Object-Oriented Programming; 9.1 S3 Classes; 9.2 S4 Classes; 9.3 S3 Versus S4; 9.4 Managing Your Objects; Chapter 10: Input/Output; 10.1 Accessing the Keyboard and Monitor; 10.2 Reading and Writing Files; 10.3 Accessing the Internet; Chapter 11: String Manipulation; 11.1 An Overview of String-Manipulation Functions; 11.2 Regular Expressions; 11.3 Use of String Utilities in the edtdbg Debugging Tool; Chapter 12: Graphics; 12.1 Creating Graphs; 12.2 Customizing Graphs; 12.3 Saving Graphs to Files; 12.4 Creating Three-Dimensional Plots; Chapter 13: Debugging; 13.1 Fundamental Principles of Debugging; 13.2 Why Use a Debugging Tool?; 13.3 Using R Debugging Facilities; 13.4 Moving Up in the World: More Convenient Debugging Tools; 13.5 Ensuring Consistency in Debugging Simulation Code; 13.6 Syntax and Runtime Errors; 13.7 Running GDB on R Itself; Chapter 14: Performance Enhancement: Speed and Memory; 14.1 Writing Fast R Code; 14.2 The Dreaded for Loop; 14.3 Functional Programming and Memory Issues; 14.4 Using Rprof() to Find Slow Spots in Your Code; 14.5 Byte Code Compilation; 14.6 Oh No, the Data Doesn't Fit into Memory!; Chapter 15: Interfacing R to Other Languages; 15.1 Writing C/C++ Functions to Be Called from R; 15.2 Using R from Python; Chapter 16: Parallel R; 16.1 The Mutual Outlinks Problem; 16.2 Introducing the snow Package; 16.3 Resorting to C; 16.4 General Performance Considerations; 16.5 Debugging Parallel R Code; Installing R; Downloading R from CRAN; Installing from a Linux Package Manager; Installing from Source; Installing and Using Packages; Package Basics; Loading a Package from Your Hard Drive; Downloading a Package from the Web; Listing the Functions in a Package; Colophon;
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).