--- title: "Week 2 R Style and Programming: Exercises" date: "January 18, 2018" output: html_document --- ```{r setup, include=FALSE} library(knitr) knitr::opts_chunk$set(echo = TRUE) knitr::knit_hooks$set(mysize = function(before, options, envir) { if (before) return(options$size) }) ``` ## Exercise: Order of operations Note that order of operations is important in writing R code. ```{r opt,eval=F} 4 - 2 ^ 2 (4 - 2) ^ 2 5 * 2 - 3 ^ 2 ! TRUE & pi == 3 ! (TRUE | FALSE) ``` Evaluate all four expressions. Note `!` is R's not operator. ## Exercise: Function Descriptions Document this function with 1. a description, 2. summary of input(s) 3. summary of outputs ```{r} RollDice <- function(num.rolls){ # # ARGS: # RETURNS: return(sample(6, num.rolls, replace = T)) } ``` Note for help with functions in R, type `?sample`. ## Exercise: Writing and Documenting a Function Use the defined style guidelines to create an R script that: 1. Takes a state abbreviations as an input 2. Imports a file available at: [http://math.montana.edu/ahoegh/teaching/stat408/datasets/HousingSales.csv](http://math.montana.edu/ahoegh/teaching/stat408/datasets/HousingSales.csv) 3. Creates a subset of housing sales from that state. 4. Returns a vector with the mean closing price in that state. Verify your functions works by running it twice using "MT" and "NE" as inputs. ## Exercise: Functions Part 2 Now write a function that; 1. Takes daily snowfall total in inches as input 2. Takes day of week as input 3. Returns whether to ski or stay home. Also include and the `stop()` function for errors. Test this function with two settings: - snowfall = 15, day = "Sat" - snowfall = -1, day = "Mon" ## Exercise: Aggregate Earlier we wrote a function to compute the average housing price for two states, now use aggregate to compute this for all the states in the housing data set.