--- title: "Basic R Data Structures" output: html_notebook --- ## A brief history of S, Splus and R * **S1 (qpe)** -- original version internal to Bell Labs + Fortran interface + Copy on modify (preserve original data). + Data stored on disk. * **S2** (Becker, Chambers & Wilks, 1988; _Blue Book_). + vector + matrix, array + function + plot * **S3** (Chambers & Hastie, 1992; _White Book_) + list + data.frame + formula & lm + class() -- Informal (S3) classes + UseMethod -- Informal Generic Functions * **Splus** is commercial version of **S** * **R** open source version of **S** + Input from XLISP-STAT + Workspace, not disk storage. * **S4** (Chambers, 1998; _Green Book_) + Formal Classes & Generic Function + Really first implemented in *R* * **R6** (Chambers, 2016) + Reference classes (like c++, java, &c) # The Vector ## Storage modes ## The `c()` function ## Vectorized operations ## Summary operators ## Numerical Indexes ### Assignment & Indexes ## Negative indexes ## Logical Indexes ## The `if` statement ### isTRUE() ### all and any ## The `ifelse` function ## Named vectors ## Character indexes ## Vector exercises # Matrixes and Arrays ## Column major order ## indexes ## row and column sums, apply function ## sweep operator ## arrays ## aperm # functions ## writing functions ## functions as arguments ## anonymous functions ## Local and global variables ## Variable Scope ## Search Lists ## Function exercises # lists ## The two extraction operators ## Named lists (dictionaries) ## The `$` extractor ## The `for` loop ```{r} state.x77 ```