Summary
In this chapter, you learned about the idea and usage of functional programming, including closures and higher order functions. We went further by digging into the metaprogramming facilities, including language objects, evaluation functions, formula, and the implementation of dynamic scoping to ensure user-input expressions are correctly handled when we customize the evaluation behavior. Since a number of popular packages use metaprogramming and non-standard evaluation to make interactive analysis easier, it is important to understand how it works so that we can be more confident to predict and debug the code.
In the next chapter, we will walk into another infrastructure of R: the object-oriented programming systems. You will learn the basic idea of object-oriented programming, how this idea is implemented in R, and how it can be useful. More specifically, we will begin with the looser S3 system, cover the stricter system S4 which offers a richer set of features, and introduce...