## Overview

The Introduction to R programming course helps participants familiarize themselves with concepts like manipulating objects in R, such as, reading data, accessing R packages, writing R functions and creating informative graphs. The course also covers how to analyze data with the help of common statistical models and how to apply the R software on a command line as well as in a Graphical User Interface (GUI). The course combines hands-one exercises and engaging lectures to ensure that the participants get a thorough understanding of the concepts discussed.

## What You'll Learn

- R and available GUIs
- R and statistics
- Data permanency and removing objects
- Objects, modes, attributes
- Arrays
- Matrices
- Lists and dataframes
- R as a set of statistical tables
- Packages and namespaces

## Curriculum

- Making R more friendly, R and available GUIs
- The R environment
- Related software and documentation
- R and statistics
- Using R interactively
- An introductory session
- Getting help with functions and features
- R commands, case sensitivity, etc.
- Recall and correction of previous commands
- Executing commands from or diverting output to a file
- Data permanency and removing objects

- Vectors and assignment
- Vector arithmetic
- Generating regular sequences
- Logical vectors
- Missing values
- Character vectors
- Index vectors; selecting and modifying subsets of a data set
- Other types of objects

- Intrinsic attributes: mode and length
- Changing the length of an object
- Getting and setting attributes
- The class of an object

- A specific example
- The function tapply() and ragged arrays
- Ordered factors

- Arrays
- Array indexing. Subsections of an array
- Index matrices
- The array() function
- Mixed vector and array arithmetic. The recycling rule
- The outer product of two arrays
- Generalized transpose of an array
- Matrix facilities
- Matrix multiplication
- Linear equations and inversion
- Eigenvalues and eigenvectors
- Singular value decomposition and determinants
- Least squares fitting and the QR decomposition
- Forming partitioned matrices, cbind() and rbind()
- The concatenation function, (), with arrays
- Frequency tables from factors

- Lists
- Constructing and modifying lists
- Concatenating lists

- Data frames
- Making data frames
- attach() and detach()
- Working with data frames
- Attaching arbitrary lists
- Managing the search path

- The read.table() functions
- The scan() function
- Accessing built-in data sets
- Loading data from other R packages

- Editing data

- R as a set of statistical tables
- Examining the distribution of a set of data
- One- and two-sample tests

- Grouped expressions
- Control statements
- Conditional execution: IF statements
- Repetitive execution: FOR loops, REPEAT and WHILE

- Simple examples
- Defining new binary operators
- Named arguments and defaults
- The ‘…’ argument
- Assignments within functions
- More advanced examples
- Efficiency factors in block designs
- Dropping all names in a printed array
- Recursive numerical integration

- Scope
- Customizing the environment
- Classes, generic functions and object orientation

- Defining statistical models; formulae
- Contrasts

- Linear models
- Generic functions for extracting model information
- Analysis of variance and model comparison
- ANOVA tables

- Updating fitted models
- Generalized linear models
- Families
- The glm() function

- Nonlinear least squares and maximum likelihood models
- Least squares
- Maximum likelihood

- Some non-standard models

- High-level plotting commands
- The plot() function
- Displaying multivariate data
- Display graphics
- Arguments to high-level plotting functions

- Low-level plotting commands
- Mathematical annotation
- Hershey vector fonts

- Interacting with graphics
- Using graphics parameters
- Permanent changes: The par() function
- Temporary changes: Arguments to graphics functions

- Graphics parameters list
- Graphical elements
- Axes and tick marks
- Figure margins
- Multiple figure environment

- Device drivers
- PostScript diagrams for typeset documents
- Multiple graphics devices

- Dynamic graphics

- Standard packages
- Contributed packages and CRAN
- Namespaces

## Who should attend

- Developers
- Data scientists
- UI/UX designers and developers
- Software engineers
- Software architects