Up-to-Date Guidance from One of the Foremost Members of the R Core Team Written by John M. Chambers, the leading developer of the original S software, Extending R covers key concepts and techniques in R to support analysis and research projects. It presents the core ideas of R, provides programming guidance for projects of all scales, and introduces new, valuable techniques that extend R. The book first describes the fundamental characteristics and background of R, giving readers a foundation for the remainder of the text. It next discusses topics relevant to programming with R, including the apparatus that supports extensions. The book then extends R's data structures through object-oriented programming, which is the key technique for coping with complexity. The book also incorporates a new structure for interfaces applicable to a variety of languages. A reflection of what R is today, this guide explains how to design and organize extensions to R by correctly using objects, functions, and interfaces. It enables current and future users to add their own contributions and packages to R
Understanding R Objects, Functions and Interfaces Three Principles Everything is an Object Everything is a Function Call Interfaces are Part of R Functional Programming Object-Oriented Programming Evolution Computational Methods The First Version of S Functional, Object-Based S R Arrives and Evolves Evolution of Object-Oriented Programming Functional OOP in S and R S4 and R R in Operation Objects and References Function Calls Interfaces The R Evaluator Programming with R Small, Medium and Large Functions Functional Programming and R Assignments and Replacements Computing on the Language Interfaces and Primitives Getting it to Run Faster Objects Types and Attributes Object Management Reference Objects; Environments Packages Understanding Packages Installing a Package Loading and Attaching a Package Sharing your Package In the Large Object-Oriented Programming Classes and Methods in R OOP Software in R Functional and Encapsulated OOP Creating Classes in R Creating Methods in R Example: Classes for Models Functional OOP in R Functional OOP in Extending R Defining Classes Defining Methods and Generic Functions Classes and Methods in an R Package Functional Classes in Detail Generic Functions in Detail Functional Methods in Detail S3 Methods and Classes Encapsulated OOP in R The Structure of Encapsulated OOP Using Encapsulated OOP Defining Reference Classes Fields in Reference Classes Methods in Reference Classes Functional Methods for Reference Classes Interfaces Understanding Interfaces Introduction Available Interfaces Subroutines and Evaluators Server Language Software Server Language Computations Server Language Object References Data Conversion Interfaces for Performance The XR Structure for Interfaces Introduction The XR Interface Structure Evaluator Objects and Methods Application Programming Specializing to the Server Language Proxy Objects Proxy Functions and Classes Data Conversion An Interface to Python R and Python Python Computations Python Programming Python Functions Python Classes Data Conversion An Interface to Julia R and Julia Julia Computations Julia Programming Julia Functions Julia Types Data Conversion Subroutine Interfaces R, Subroutines and C++ C++ Interface Programming C++ Functions C++ Classes Data Conversion Bibliography Index