0% found this document useful (0 votes)
98 views64 pages

Introduction To R - Hands-On

This document provides an introduction to the structure and basic concepts of R, including: - R uses objects, functions, and control elements as its main building blocks. Objects can hold numeric, logical, character, or other data. Functions perform operations on objects. Control elements like for loops allow running functions repeatedly. - Common objects include vectors, matrices, arrays, lists, and data frames. Functions like c(), seq(), and matrix() are used to create numeric and other objects. Logical objects represent TRUE/FALSE values. - Indexing with brackets [ ] allows accessing or replacing individual elements of objects. Functions like head(), tail(), and names() provide information about data frames. - Packages

Uploaded by

Ajay Korimilli
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
98 views64 pages

Introduction To R - Hands-On

This document provides an introduction to the structure and basic concepts of R, including: - R uses objects, functions, and control elements as its main building blocks. Objects can hold numeric, logical, character, or other data. Functions perform operations on objects. Control elements like for loops allow running functions repeatedly. - Common objects include vectors, matrices, arrays, lists, and data frames. Functions like c(), seq(), and matrix() are used to create numeric and other objects. Logical objects represent TRUE/FALSE values. - Indexing with brackets [ ] allows accessing or replacing individual elements of objects. Functions like head(), tail(), and names() provide information about data frames. - Packages

Uploaded by

Ajay Korimilli
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 64

Introduction to R

Brody Sandel
The structure of R
▶ Objects (what “things” do you have?)
▶ Functions (what do you want to do to them?)
▶ Control elements (when/how often do you want to do
it?)
What is an object?
▶ What size is it?
▶ Vector (one-dimensional, including length = 1)
▶ Matrix (two-dimensional)
▶ Array (n-dimensional)
▶ What does it hold?
▶ Numeric (0, 0.2, Inf, NA)
▶ Logical (T, F)
▶ Factor (“Male”, “Female”)
▶ Character (“Bromus diandrus”, “Bromus carinatus”, “Bison
bison”)
▶ Mixtures
▶ Lists
▶ Dataframes
▶ class() is a function that tells you what type of object
the argument is
Creating a numeric object
a = 10
a
[1] 10

a <- 10
a
[1] 10

10 -> a
a
[1] 10
Creating a numeric object
a = 10
a
[1] 10

a <- 10 All of these are


a assignments

[1] 10

10 -> a
a
[1] 10
Creating a numeric object
a = a + 1
a
[1] 11

b = a * a
b
[1] 121

x = sqrt(b)
x
[1] 11
Creating a numeric object (length >1)
a = c(4,2,5,10)
a
[1] 4 2 5 10

a = 1:4
a
[1] 1 2 3 4

a = seq(1,10)
a
[1] 1 2 3 4 5 6 7 8 9 10
Creating a numeric object (length >1)
a = c(4,2,5,10)
a
[1] 4 2 5 10

a = 1:4
a
Two arguments
[1] 1 2 3 4 passed to this
function!

a = seq(1,10)
a
[1] 1 2 3 4 5 6 7 8 9 10
Creating a numeric object (length >1)
a = c(4,2,5,10)
a
[1] 4 2 5 10

a = 1:4
a
[1] 1 2 3 4 This function
returns a vector

a = seq(1,10)
a
[1] 1 2 3 4 5 6 7 8 9 10
Creating a matrix object
A = matrix(data = 0, nrow = 6, ncol = 5)
A
[,1] [,2] [,3] [,4] [,5]
[1,] 0 0 0 0 0
[2,] 0 0 0 0 0
[3,] 0 0 0 0 0
[4,] 0 0 0 0 0
[5,] 0 0 0 0 0
[6,] 0 0 0 0 0
Creating a logical object
3 < 5
[1] TRUE

3 > 5
[1] FALSE

x = 5
x == 5
[1] TRUE
x != 5
[1] FALSE

Conditional
< >
operators <= >= == != %in% & |
Creating a logical object
3 < 5
[1] TRUE

3 > 5 Very important to


remember this
[1] FALSE difference!!!

x = 5
x == 5
[1] TRUE
x != 5
[1] FALSE

Conditional
< >
operators <= >= == != %in% & |
Creating a logical object
x = 1:10
x < 5
[1] TRUE TRUE TRUE TRUE FALSE
[6] FALSE FALSE FALSE FALSE FALSE
x == 2
[1] FALSE TRUE FALSE FALSE FALSE
[6] FALSE FALSE FALSE FALSE FALSE

Conditional
< >
operators <= >= == != %in% & |
Getting at values
▶ R uses [ ] to refer to elements of objects
▶ For example:
▶ V[5] returns the 5th element of a vector called V
▶ M[2,3] returns the element in the 2nd row, 3rd column of
matrix M
▶ M[2,] returns all elements in the 2nd row of matrix M
▶ The number inside the brackets is called an index
Indexing a 1-D object
a = c(3,2,7,8)
a[3]
[1] 7

a[1:3]
[1] 3 2 7

a[seq(2,4)]
[1] 2 7 8
Indexing a 1-D object
a = c(3,2,7,8)
a[3]
[1] 7

a[1:3]
[1] 3 2 7 See what I did
there?
a[seq(2,4)]
[1] 2 7 8
Just for fun . . .

a = c(3,2,7,8)
a[a]
Just for fun . . .

a = c(3,2,7,8)
a[a]
[1] 7 2 NA NA

When would a[a] return


Indexing a 2-D object
A = matrix(data = 0, nrow = 6, ncol = 5)
A
[,1] [,2] [,3] [,4] [,5]
[1,] 0 0 0 0 0
[2,] 0 0 0 0 0
[3,] 0 0 0 0 0
[4,] 0 0 0 0 0
[5,] 0 0 0 0 0
[6,] 0 0 0 0 0

A[3,4]
[1] 0

The order is always [row,


Lists
▶ A list is a generic holder of other variable types
▶ Each element of a list can be anything (even another
list!)
a = c(1,2,3)
b = c(10,20,30)
L = list(a,b)
L
[[1]]
[1] 1 2 3
[[2]]
[3] 10 20 30
L[[1]]
[1] 1 2 3
L[[2]][2]
[1] 20
Data and data frames
▶ Principles
▶ Read data off of hard drive
▶ R stores it as an object (saved in your computer’s
memory)
▶ Treat that object like any other
▶ Changes to the object are restricted to the object, they
don’t affect the data on the hard drive
▶ Data frames are 2-d objects where each column can
have a different class
Working directory
▶ The directory where R looks for files, or writes files
▶ setwd() changes it
▶ dir() shows the contents of it

setwd(“C:/Project Directory/”)
dir()
[1] “a figure.pdf”
[2] “more data.csv”
[3] “some data.csv”
Read a data file

setwd(“C:/Project Directory/”)
dir()
[1] “a figure.pdf”
[2] “more data.csv”
[3] “some data.csv”
myData = read.csv(“some data.csv”)
Writing a data file
setwd(“C:/Project Directory/”)
dir()
[1] “a figure.pdf”
[2] “more data.csv”
[3] “some data.csv”
myData = read.csv(“some data.csv”)
write.csv(myData,”updated data.csv”)
dir()
[1] “a figure.pdf”
[2] “more data.csv”
[3] “some data.csv”
[4] “updated data.csv”
Finding your way around a data frame
▶ head() shows the first few lines
▶ tail() shows the last few
▶ names() gives the column names
▶ Pulling out columns
▶ Data$columnname
▶ Data[,columnname]
▶ Data[,3] (if columnname is the 3rd column)
Functions

Object Function Object


Functions

Object

Object Function Object

Object
Functions

Object

Object Function Object

Object Options
Functions

Object

Object Function Object

Retur
Object Options
n
Argumen
ts
Functions

Object

Object Function Object

Object Options

Controlled by control elements (for, while,


if)
Calling a function
▶ Call: a function with a particular set of arguments

▶ function( argument, argument . . . )


▶ x = function( argument, argument . . .)

sqrt(16)
[1] 4

x = sqrt(16)
x
[1] 4
Calling a function
▶ Call: a function with a particular set of arguments

▶ function( argument, argument . . . )


▶ x = function( argument, argument . . .)

sqrt(16) The function return


is not saved, just
[1] 4 printed to the
screen

x = sqrt(16)
x
[1] 4
Calling a function
▶ Call: a function with a particular set of arguments

▶ function( argument, argument . . . )


▶ x = function( argument, argument . . .)

sqrt(16)
[1] 4

x = sqrt(16) The function return


x is assigned to a
new object, “x”
[1] 4
Arguments to a function
▶ function( argument, argument . . .)
▶ Many functions will have default values for arguments
▶ If unspecified, the argument will take that value
▶ To find these values and a list of all arguments, do:

?function.name

▶ If you are just looking for functions related to a word,


I would use google. But you can also:

??key.word
Packages
▶ Sets of functions for a particular purpose
▶ We will explore some of these in detail

install.packages()

require(package.name)

CRAN
!
Function help

Synta
x
Argument
s

Retur
n
Function help
Programming in R

Functions Loo
p
Programming in R

Functions Loo
p

Functions

if Output

Functions

Output if Output
Next topic: control elements
▶ for
▶ if
▶ while

▶ The general syntax is:

for/if/while ( conditions )
{
commands
}
For
▶ When you want to do something a certain number of
times
▶ When you want to do something to each element of
a vector, list, matrix . . .
X = seq(1,4,by = 1)
for(i in X)
{
print(i+1)
}
[1] 2
[1] 3
[1] 4
[1] 5
Details of for
▶ for( i in 1:10 )
Details of for
▶ for( i in 1:10 )

1 2 3 4 5 6 7 8 9 10
Details of for
▶ for( i in 1:10 )

1 2 3 4 5 6 7 8 9 10
i=1
Do any number of functions
with i
print(i)
x = sqrt(i)
Details of for
▶ for( i in 1:10 )

1 2 3 4 5 6 7 8 9 10
i=2
Do any number of functions
with i
print(i)
x = sqrt(i)
Details of for
▶ for( i in 1:10 )

1 2 3 4 5 6 7 8 9 10
i = 10
Do any number of functions
with i
print(i)
x = sqrt(i)
i as an Index
X = c(17,3,-1,10,9)
Y = rep(NA,5)
for(i in 1:length(X))
{
if(X[i] < 12)
{
Y[i] = X[i] + 5
}
}

X= 17 3 -1 10 9
i as an Index
X = c(17,3,-1,10,9)
Y = rep(NA,5)
for(i in 1:length(X))
{
if(X[i] < 12)
{
Y[i] = X[i] + 5
}
}

X= 17 3 -1 10 9 Y NA NA NA NA NA
=
i as an Index
X = c(17,3,-1,10,9)
Y = NULL
for(i in 1:length(X))
{
if(X[i] < 12)
{
Y[i] = X[i] + 5
}
}

X= 17 3 -1 10 9 Y NA NA NA NA NA
=
1 2 3 4 5
i=1
(so X[i] =
17)
i as an Index
X = c(17,3,-1,10,9)
Y = NULL
for(i in 1:length(X))
{
if(X[i] < 12) F
{
Y[i] = X[i] + 5
}
}

X= 17 3 -1 10 9 Y NA NA NA NA NA
=
1 2 3 4 5
i=1
(so X[i] =
17)
i as an Index
X = c(17,3,-1,10,9)
Y = NULL
for(i in 1:length(X))
{
if(X[i] < 12)
{
Y[i] = X[i] + 5
}
}

X= 17 3 -1 10 9 Y NA NA NA NA NA
=
1 2 3 4 5
i=2
(so X[i] = 3)
i as an Index
X = c(17,3,-1,10,9)
Y = NULL
for(i in 1:length(X))
{
if(X[i] < 12) T
{
Y[i] = X[i] + 5
}
}

X= 17 3 -1 10 9 Y NA NA NA NA NA
=
1 2 3 4 5
i=2
(so X[i] = 3)
i as an Index
X = c(17,3,-1,10,9)
Y = NULL
for(i in 1:length(X))
{
if(X[i] < 12)
{
Y[i] = X[i] + 5
}
}

X= 17 3 -1 10 9 Y NA 8 NA NA NA
=
1 2 3 4 5
i=2
(so X[i] = 3)
i as an Index
X = c(17,3,-1,10,9)
Y = NULL
for(i in 1:length(X))
{
if(X[i] < 12)
{
Y[i] = X[i] + 5
}
}

X= 17 3 -1 10 9 Y NA 8 4 15 14
=
1 2 3 4 5
i as an Index
X = c(17,3,-1,10,9)
Y = NULL
for(i in 1:length(X))
{
if(X[i] < 12)
{
Y[i] = X[i] + 5
}
}

X= 17 3 -1 10 9 Y NA 8 4 15 14
=
1 2 3 4 5
This vector (created by the for) indexes vectors X and
Y
2-dimension equivalent
X = matrix(1:6,ncol = 2,nrow = 3)
Y = matrix(NA,ncol = 2,nrow = 3)

for(i in 1:nrow(X))
{
for(j in 1:ncol(X))
{
Y[i,j] = X[i,j]^2
}
}

1 4 NA NA

X= 2 5 Y = NA NA

3 6 NA NA
2-dimension equivalent
X = matrix(1:6,ncol = 2,nrow = 3)
Y = matrix(NA,ncol = 2,nrow = 3)

for(i in 1:nrow(X))
{
for(j in 1:ncol(X))
{
Y[i,j] = X[i,j]^2
}
}
i j

1 4 NA NA

X= 2 5 Y = NA NA

3 6 NA NA
2-dimension equivalent
X = matrix(1:6,ncol = 2,nrow = 3)
Y = matrix(NA,ncol = 2,nrow = 3)

for(i in 1:nrow(X))
{
for(j in 1:ncol(X))
{
Y[i,j] = X[i,j]^2
}
}
i j

1 1
1 4 1 NA

X= 2 5 Y = NA NA

3 6 NA NA
2-dimension equivalent
X = matrix(1:6,ncol = 2,nrow = 3)
Y = matrix(NA,ncol = 2,nrow = 3)

for(i in 1:nrow(X))
{
for(j in 1:ncol(X))
{
Y[i,j] = X[i,j]^2
}
}
i j

1 1
1 4 1 16 1 2
X= Y= 2 1
2 5 4 NA

3 6 NA NA
2-dimension equivalent
X = matrix(1:6,ncol = 2,nrow = 3)
Y = matrix(NA,ncol = 2,nrow = 3)

for(i in 1:nrow(X))
{
for(j in 1:ncol(X))
{
Y[i,j] = X[i,j]^2
}
}
i j

1 1
1 4 1 16 1 2
X= Y= 2 1
2 5 4 25
2 2
3 1
3 6 9 36
3 2
If
▶ When you want to execute a bit of code only if some
condition is true
X = 25
if( X < 22 )
{
print(X+1)
}
X = 20
if( X < 22 )
{
print(X+1)
}
[1] 21

< > <= >= == != %in% & |


If/else
▶ Do one thing or the other
X = 10
if( X < 22 )
{
X+1
}else(sqrt(X))
[1] 11
X = 25
if( X < 22 )
{
X+1
}else(sqrt(X))
[1] 5

< > <= >= == != %in% & |


While
▶ Do something as long as a condition is TRUE

i = 1
while( i < 5 )
{
i = i + 1
}
i
[1] 5

< > <= >= == != %in% & |


End of first lecture
▶ Try it out!

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy