
It’s easiest to find and display this file from within R: To see R’s complete C API, look at the header file Rinternals.h. C interface, the old API defined in Rdefines.h, or rarely used language features. The contents of this chapter draw heavily from Section 5 (“System and foreign language interfaces”) of Writing R extensions, but focus on best practices and modern tools. You’ll need a little patience, but it is possible to read R’s C source code, and you will learn a lot doing it. You’ll need some basic C knowledge, which you can get from a standard C text (e.g., The C Programming Language by Kernigan and Ritchie), or from Rcpp. It’s useful to be able to figure out how those functions work, so this chapter will introduce you to R’s C API. However, many base R functions, and many functions in older packages, are written in C.


Reading R’s source code is an extremely powerful technique for improving your programming skills.

You’re reading the first edition of Advanced R for the latest on this topic, see the R internals documentation.
