Introduction Why R? Who should read this book What you will get out of this book What you will not learn Meta-techniques Recommended reading Getting help Acknowledgments Conventions Colophon --; I. Foundations Introduction --; Names and values Introduction Binding basics Copy-on-modify Object size Modify-in-place Unbinding and the garbage collector Quiz answers --; Vectors Introduction Atomic vectors Attributes S3 atomic vectors Lists Data frames and tibbles NULL Answers --; Subsetting Introduction Selecting multiple elements S.electing a single element Subsetting and assignment Applications Quiz answers --; Control flow Introduction Choices Loops Quiz answers --; Functions Introduction Function fundamentals Function composition Lexical scoping Lazy evaluation ... (dot-dot-dot) Exiting a function Function forms Quiz answers --; Environments Introduction Environment basics Recursing over environments Special environments Call stacks As data structures Quiz answers --; Conditions Introduction Signalling conditions Ignoring conditions Handling conditions Custom conditions Applications Quiz answers --; II. Functional programming Introduction --; Functionals Introduction My first functional: map() Purrr style Map variants Reduce family Predicate functionals Base functionals --; Function factories Introduction Factory fundamentals Graphical factories Statistical factories Function factories + functionals --; Function operators Introduction Existing function operators Case study: creating your own function operators --; III. Object oriented programming Introduction --; Base types Introduction Base vs OO objects Base types --; S3 Introduction Basics Classes Generics and methods Object styles Inheritance Dispatch details --; R6 Introduction Classes and methods Controlling access Reference semantics Why R? --S4 Introduction Basics Classes Generics and methods Method dispatch S4 and S3 --; Trade-offs Introduction S4 vs S3 R6 vs S3 --; IV. Metaprogramming Introduction --; Big picture Introduction Code is data Code is a tree Code can generate code Evaluation runs code Customising evaluation with functions Customising evaluation with data Quosures --; Expressions Introduction Abstract syntax trees Expressions Parsing and grammar Walking the AST with recursive functions Specialised data structures --; Quasiquotation Introduction Motivation Quoting Unquoting Non-quoting ...(dot-dot-dot) Case studies History --; Evaluation Introduction Evaluation basics Quosures Data masks Using tidy evaluation Base evaluation --; Translating R code Introduction HTML LaTeX --; V. Techniques Introduction --; Debugging Introduction Overall approach Locating errors Interactive debugger Non-interactive debugging Non-error failures --; Measuring performance Introduction Profiling Microbenchmarking --; Improving performance Introduction Code organisation Check for existing solutions Do as little as possible Vectorise Avoid copies Case study: t-test Other techniques --; Rewriting R code in C++ Introduction Getting started with C++ Other classes Missing values The Standard Template Llibrary Case studies Using Rcpp in a package Learning more Acknowledgments.
SUMMARY OR ABSTRACT
Text of Note
Advanced R helps you understand how R works at a fundamental level. It is designed for R programmers who want to deepen their understanding of the language, and programmers experienced in other languages who want to understand what makes R different and special. This book will teach you the foundations of R; three fundamental programming paradigms (functional, object-oriented, and metaprogramming); and powerful techniques for debugging and optimisingyour code.By reading this book, you will learn: The difference between an object and its name, and why the distinction is important The important vector data structures, how they fit together, and how you can pull them apart using subsetting The fine details of functions and environments The condition system, which powers messages, warnings, and errors The powerful functional programming paradigm, which can replace many for loops The three most important OO systems: S3, S4, and R6 The tidy eval toolkit for metaprogramming, which allows you to manipulate code and control evaluation Effective debugging techniques that you can deploy, regardless of how your code is run How to find and remove performance bottlenecks The second edition is a comprehensive update: New foundational chapters: Names and values," "Control flow," and "Conditions" comprehensive coverage of object oriented programming with chapters on S3, S4, R6, and how to choose between them Much deeper coverage of metaprogramming, including the new tidy evaluation framework use of new package like rlang (http://rlang.r-lib.org), which provides a clean interface to low-level operations, and purr (http://purrr.tidyverse.org/) for functional programming use of color in code chunks and figures."--Provided by publisher.