Description
Book SynopsisR 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 n
Trade Review"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"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"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"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"If you need to do statistical work as a programmer I highly recommend buying it."
—Bryan Bell, Math and 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
Table of ContentsAcknowledgments; 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;