R Basics

Functions

R Packages

library(tidyverse)

Class Setup

  • Class Setup

  • Workspaces

  • R Basics

  • Comparing Numbers

  • Indexing

  • if/else Statements

  • Built-in Functions

  • User-built functions

Class Setup Modifications

  • Tuesday
    • Lecture on Neural Networks
  • Thursday
    • Work on Project
    • Work on Goals that leads to the completion of your project.

This will begin next week.

Why the change

This will help ensure projects get done, and students to learn at their own pace.

Goals

Every week, your homework is to create one SMART Goal and provide evidence that you reached that goal.

If you were not able to reach your goal, provide clear steps on how to achieve it the following week.

SMART Goals

SMART goals are a structured way to set clear, achievable objectives.

They help turn vague intentions into concrete plans.

What Does SMART Stand For?

  • Specific: Be clear and focused.
  • Measurable: A criteria to track progress.
  • Achievable: Be realistic and attainable.
  • Relevant: Make it align with your priorities.
  • Time-bound: Have a clear deadline.

Example (Not SMART)

I want to get better at R programming.

Example (SMART)

I will learn how to use for loops in R by writing at least one loop-based script in a week that performs tasks such as iterating over vectors and data frames.

Why Use SMART Goals?

  • Improves focus and motivation
  • Makes progress measurable
  • Increases likelihood of success
  • Reduces ambiguity

Homework 0

Provide some background information about your experience in computing. Have you coded any algorithms? Have you’ve done any statistical analysis? What programming languages have used before?

Write a paragraph of what you want to achieve in this machine learning course, and create one smart goal to achieve by next Thursday.

Provide a description of what you want to do for your project.

Workspaces

  • Class Setup

  • Workspaces

  • R Basics

  • Comparing Numbers

  • Indexing

  • if/else Statements

  • Built-in Functions

  • User-built functions

Workspaces

Workspaces allows you to create locations on your computer and set up a computing environment in one location.

R Basics

  • Class Setup

  • Workspaces

  • R Basics

  • Comparing Numbers

  • Indexing

  • if/else Statements

  • Built-in Functions

  • User-built functions

R as a calculator

R can evaluate different expressions in the console tab.

Try the following:

  1. \(4(4+2)/34\)
  2. \(6^3\)
  3. \(3-1\)
  4. \(4+4/3+45(32*34-54)\)

R Functions

R functions performs tasks to specific data values.

Evaluate the following values in R:

  1. \(\sqrt{3}\)
  2. \(e^3\)
  3. \(\ln(53)\)
  4. \(\log(324)\)
  5. \(\sin(3)\)
  6. \(\sin(3\pi)\)

Types of Data

  • Numeric

  • Character

  • Logical

  • Missing

Evaluate the following code:

is.numeric(1)
is.numeric("1")
is.numeric(T)
is.numeric(NA)

Types of Objects

In R, an object contains a set of data. The most common types are vectors and matrix.

Run this code and print out the objects in the console:

x <- 3:34
y <- matrix(1:20, nrow = 4)

Data Frames

Data frames can be thought of as R’s version of a data set.

Play around with mtcars:

mtcars 
#>                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#> Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
#> Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
#> Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
#> Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
#> Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
#> Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
#> Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
#> Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
#> Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
#> Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
#> Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
#> Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
#> Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
#> Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
#> Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
#> Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
#> Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
#> Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
#> Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
#> Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
#> Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
#> Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
#> AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
#> Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
#> Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
#> Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
#> Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
#> Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
#> Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
#> Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
#> Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
#> Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2

Lists

List can be thought as an extended vector, but each element is a different R object.

Try playing with this R object:

list_one <- list(mtcars, rep(0, 4),
                 diag(rep(1, 3)))
list_one
#> [[1]]
#>                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#> Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
#> Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
#> Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
#> Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
#> Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
#> Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
#> Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
#> Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
#> Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
#> Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
#> Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
#> Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
#> Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
#> Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
#> Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
#> Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
#> Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
#> Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
#> Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
#> Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
#> Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
#> Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
#> AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
#> Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
#> Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
#> Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
#> Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
#> Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
#> Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
#> Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
#> Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
#> Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
#> 
#> [[2]]
#> [1] 0 0 0 0
#> 
#> [[3]]
#>      [,1] [,2] [,3]
#> [1,]    1    0    0
#> [2,]    0    1    0
#> [3,]    0    0    1

Comparing Numbers

  • Class Setup

  • Workspaces

  • R Basics

  • Comparing Numbers

  • Indexing

  • if/else Statements

  • Built-in Functions

  • User-built functions

Comparing Numbers

You can compare two numbers, or objects, that will result in a logical output.

Comparing Numbers Operators

Operator Description
> Greater Than
< Less Than
>= Greater than or equal
<= Less than or equal
== Equals
!= Not Equals

Labeled Lists (Key-Value)

list_two <- list(data = mtcars, 
                 vector  = rep(0, 4),
                 matricx = diag(rep(1, 3)))
list_two
#> $data
#>                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#> Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
#> Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
#> Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
#> Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
#> Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
#> Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
#> Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
#> Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
#> Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
#> Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
#> Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
#> Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
#> Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
#> Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
#> Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
#> Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
#> Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
#> Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
#> Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
#> Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
#> Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
#> Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
#> AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
#> Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
#> Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
#> Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
#> Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
#> Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
#> Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
#> Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
#> Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
#> Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
#> 
#> $vector
#> [1] 0 0 0 0
#> 
#> $matricx
#>      [,1] [,2] [,3]
#> [1,]    1    0    0
#> [2,]    0    1    0
#> [3,]    0    0    1
list_two$vector
#> [1] 0 0 0 0

Resources in Programming

R Basics Material

Indexing

  • Class Setup

  • Workspaces

  • R Basics

  • Comparing Numbers

  • Indexing

  • if/else Statements

  • Built-in Functions

  • User-built functions

Indexing

Within an R object, you can access an element by indexing it.

Indexing tells R which values to output.

Vectors

A vector can be indexed by adding [] after the object’s name and specifying the number of each element.

letters
letters[13]

Matrices

A matrix can be indexed by adding [] after the object’s name and specifying the number of each element. Separate the values by commas for specific indexes.

x <- matrix(1:40, nrow = 4)

Data Frames

Data frames can be indexed using the $ operator and [].

mtcars[,"mpg"]

Lists

Lists can be indexed using the [[]] for a specific element of a list.

toy_list <- list(x = letters,
                 y = mtcars,
                 z = list(x = diag(rep(1, 5),
                          y = matrix(1:40, nrow = 5),
                          z = band_members)))

if/else Statements

  • Class Setup

  • Workspaces

  • R Basics

  • Comparing Numbers

  • Indexing

  • if/else Statements

  • Built-in Functions

  • User-built functions

if/else Statements

if/else statements are used to conduct specific tasks depending on the conditions

if Statement

An if statement is used to if you want R to perform a specific function if a certain condition is met. An if statement will only run a task if a logical is returned. You will need type if, followed by the condition (as a logical) in parentheses, then the task.

Example

x <- sample(-10:10,1)
if (x > 0){
  print("Positive")
}
print(x)

else statement

An else statement will conduct a different task if the if statement does not conduct the tasks.

Example

x <- sample(-10:10,1)
if (x > 0 ){
  print("Positive")
} else {
  print("Non-positive")
} 
print(x)

Chain if/else statement

If you have more than two options, you can chain if/else statements by adding an if statement immediately after the word else.

Example

x <- sample(-10:10,1)
if (x > 0 ){
  print("Positive")
} else if (x == 0) {
  print("Zero")
} else {
  print("Negative")
}
print(x)

Built-in Functions

  • Class Setup

  • Workspaces

  • R Basics

  • Comparing Numbers

  • Indexing

  • if/else Statements

  • Built-in Functions

  • User-built functions

Built-in Functions

There are several available functions in R to conduct specific statistical methods or tasks

Help Documentation

Section Description
Description Provides a brief introduction of the function
Usage Provides potential usage of the function
Arguments Arguments that the function can take
Details An in depth description of the function
Value Provides information of the output produced by the function
Notes Any need to know information about the function
Authors Developers of the function
References References to the model and function
See Also Provide information of supporting functions
Examples Examples of the function

Generic Functions

Several R objects have a known class attached to it. A specialized object designed to be read by generic functions, such as summary() and plot().

For example, the summary() is a generic for several types of functions: summary.aov(), summary.lm(), summary.glm(), and many more.

Commonly-used Function

Functions Description
aov() Fits an ANOVA Model
lm() Fits a linear model
glm() Fits a general linear model
t.test() Conducts a t-test

User-built functions

  • Class Setup

  • Workspaces

  • R Basics

  • Comparing Numbers

  • Indexing

  • if/else Statements

  • Built-in Functions

  • User-built functions

User-built functions

  • Functions created by the user for analysis

  • Needs to be ran once to the R environment

  • Will be lost when R session is closed

Anatomy

name_of_function <- function(data_1, data_2 = NULL, 
                             argument_1, argument_2 = TRUE, argument_3 = NULL,
                             ...){
  # Conduct Task
  # Conduct Task
  output_object <- Tasks
  return(output_object)
}
  • function: used to construct the function

  • data1: first data argument that needs to supplied

  • data2: second data argument that does not need to be supplied

  • argument1: first argument must be supplied to alter function

  • argument2: second argument to alter function, set to TRUE

  • argument3: third argument that does not need to be supplied

  • : additional arguments supplied to other functions

Example

Create a function for

\[ y = \ln(x^2) \]

Example

Create a function for

\[ f(x) = \left\{\begin{array}{cc} x^3 & x<0\\ x^2 + 5 & \mathrm{otherwise} \end{array} \right. \]

Example

Create a function for

\[ f(x,y) = \left\{\begin{array}{cc} x^3 e^y & x<0\ \\ x^2 + 5 + \ln(y) & \mathrm{otherwise} \end{array} \right. \]

Example

Create the function that allows your to compute the z-score of a specific value x using the sampling distribution from a set of data (y vector):

\[ z = \frac{x-\bar y}{\sqrt{s^2_{y}/n_y}} \]