Programming in R: Supplemental Lessons: [Introduction to R and RStudio]({{ page.root }}/01-rstudio-intro/)

Key Points

Project Management With RStudio
  • Use RStudio to create and manage projects with consistent layout.

  • Treat raw data as read-only.

  • Treat generated output as disposable.

  • Separate function definition and application.

  • Use version control.

Lists and Matrices
  • R uses special values to indicate missing or incorrect data

  • A matrix is a three dimensional vector

  • A list is a container that can contain objects of different data types.

Functions Explained
  • Use function to define a new function in R.

  • Use parameters to pass values into functions.

  • Load functions into programs using source.

Subsetting Lists and Matrices
  • Matrices and lists can be subsetted using the [ function.

  • Subsetting a list with the [ function will return a list.

  • To extract a single object from the list, use the [[ function.

Split-Apply-Combine
  • Use the plyr package to split data, apply functions to subsets, and combine the results.

Producing Reports With knitr
  • Mix reporting written in R Markdown with software written in R.

  • Specify chunk options to control formatting.

  • Use knitr to convert these documents into PDF and other formats.

Dataframe Manipulation with tidyr
  • Use the tidyr package to change the layout of dataframes.

  • Use gather() to go from wide to long format.

  • Use scatter() to go from long to wide format.

Writing Good Software
  • Document what and why, not how.

  • Break programs into short single-purpose functions.

  • Write re-runnable tests.

  • Don’t repeat yourself.

  • Don’t repeat yourself.

  • Be consistent in naming, indentation, and other aspects of style.

Reading and Writing CSV Files
  • Import data from a .csv file using the read.csv(...) function.

  • Understand some of the key arguments available for importing the data properly, including header, stringsAsFactors, as.is, and strip.white.

  • Write data to a new .csv file using the write.csv(...) function

  • Understand some of the key arguments available for exporting the data properly, such as row.names, col.names, and na.

Introduction to R and RStudio

Project management with RStudio

Seeking help

Data structures

Individual values in R must be one of 5 data types, multiple values can be grouped in data structures.

Data types

Basic data structures in R: - atomic ?vector (can only contain one type) - ?list (containers for other objects) - ?data.frame two dimensional objects whose columns can contain different types of data - ?matrix two dimensional objects that can contain only one type of data. - ?factor vectors that contain predefined categorical data. - ?array multi-dimensional objects that can only contain one type of data

Remember that matrices are really atomic vectors underneath the hood, and that data.frames are really lists underneath the hood (this explains some of the weirder behaviour of R).

Vectors - ?vector() All items in a vector must be the same type. - Items can be converted from one type to another using coercion. - The concatenate function ‘c()’ will append items to a vector. - seq(from=0, to=1, by=1) will create a sequence of numbers. - Items in a vector can be named using the names() function.

Factors - ?factor() Factors are a data structure designed to store categorical data. - levels() shows the valid values that can be stored in a vector of type factor.

Lists - ?list() Lists are a data structure designed to store data of different types.

Matrices - ?matrix() Matrices are a data structure designed to store 2-dimensional data.

Data Frames - ?data.frame is a key data structure. It is a list of vectors. - cbind() will add a column (vector) to a data.frame. - rbind() will add a row (list) to a data.frame.

Useful functions for querying data structures: - ?str structure, prints out a summary of the whole data structure - ?typeof tells you the type inside an atomic vector - ?class what is the data structure? - ?head print the first n elements (rows for two-dimensional objects) - ?tail print the last n elements (rows for two-dimensional objects) - ?rownames, ?colnames, ?dimnames retrieve or modify the row names and column names of an object. - ?names retrieve or modify the names of an atomic vector or list (or columns of a data.frame). - ?length get the number of elements in an atomic vector - ?nrow, ?ncol, ?dim get the dimensions of a n-dimensional object (Won’t work on atomic vectors or lists).

Exploring Data Frames

Subsetting data

Control flow

Creating publication quality graphics

Vectorization

Functions explained

Writing data

Split-apply-combine

Dataframe manipulation with dplyr

Dataframe manipulation with tidyr

Producing reports with knitr

Best practices for writing good code

Glossary

argument
A value given to a function or program when it runs. The term is often used interchangeably (and inconsistently) with parameter.
assign
To give a value a name by associating a variable with it.
body
(of a function): the statements that are executed when a function runs.
comment
A remark in a program that is intended to help human readers understand what is going on, but is ignored by the computer. Comments in Python, R, and the Unix shell start with a # character and run to the end of the line; comments in SQL start with --, and other languages have other conventions.
comma-separated values
(CSV) A common textual representation for tables in which the values in each row are separated by commas.
delimiter
A character or characters used to separate individual values, such as the commas between columns in a CSV file.
documentation
Human-language text written to explain what software does, how it works, or how to use it.
floating-point number
A number containing a fractional part and an exponent. See also: integer.
for loop
A loop that is executed once for each value in some kind of set, list, or range. See also: while loop.
index
A subscript that specifies the location of a single value in a collection, such as a single pixel in an image.
integer
A whole number, such as -12343. See also: floating-point number.
library
In R, the directory(ies) where packages are stored.
package
A collection of R functions, data and compiled code in a well-defined format. Packages are stored in a library and loaded using the library() function.
parameter
A variable named in the function’s declaration that is used to hold a value passed into the call. The term is often used interchangeably (and inconsistently) with argument.
return statement
A statement that causes a function to stop executing and return a value to its caller immediately.
sequence
A collection of information that is presented in a specific order.
shape
An array’s dimensions, represented as a vector. For example, a 5×3 array’s shape is (5,3).
string
Short for “character string”, a sequence of zero or more characters.
syntax error
A programming error that occurs when statements are in an order or contain characters not expected by the programming language.
type
The classification of something in a program (for example, the contents of a variable) as a kind of number (e.g. floating-point, integer), string, or something else. In R the command typeof() is used to query a variables type.
while loop
A loop that keeps executing as long as some condition is true. See also: for loop.