Advanced
programming
Lecture 1
Måns Magnusson
Statistics and Machine learning
Department of computer and information science
About the course
Aim of the course
Advanced R Programming
Måns Magnusson
Advanced R Programming
Måns Magnusson
Learn to
- Write programs
- Write performant code
- Solve (machine learning) problems using
But most important...
Advanced R Programming
Måns Magnusson
Your primary tool in the next 2 years
Course plan
Advanced R Programming
Måns Magnusson
Part 1: R Syntax
Advanced R Programming
Måns Magnusson
Period: Week 1-2
Students work: Individually
Lab: Documented R file
Computer lab
Part 2: Advanced topics
Advanced R Programming
Måns Magnusson
Period: Week 3-7
Students work: In groups
Turn in: R package on github
Seminar
Part 2: Advanced topics
Advanced R Programming
Måns Magnusson
Topics
- Performant code: Writing quality code
- Linear algebra, Object orientation, Graphics
- Advanced I/O
- Performant code: Writing fast code
- Machine learning in R
Presentation(s)
Advanced R Programming
Måns Magnusson
Me
Advanced R Programming
Måns Magnusson
You?
Advanced R Programming
Måns Magnusson
Backgound?
Why this course?
Expectations?
Course practicals
Advanced R Programming
Måns Magnusson
Advanced R Programming
Måns Magnusson
Course litterature
Advanced R Programming
Måns Magnusson
Examination
Advanced R Programming
Måns Magnusson
Weekly mandatory labs/projects
deadline Wednesdays 18.00
Computer exam
Why R?
Pros
Advanced R Programming
Måns Magnusson
- Popular (among statisticians)
- Open source - all major platforms!
- High-level language - focus on data analysis
- Strong community - vast amount of packages
- Powerful for communicating results
- Connections to high-performance languages as C++
Cons
Advanced R Programming
Måns Magnusson
-
Not much knowledge of software engineering
-
Can be slooooow
- Can be memory inefficient
Basic R syntax
(and R-Studio functionality)
Data structures
Variable types
Advanced R Programming
Måns Magnusson
Variable type
Short
typeof()
R example
Integer
int
integer
1L
Real
num
double
1.2
Complex
cplx
complex
0+1i
Boolean
logi
logical
TRUE
Character
chr
character
"I <3 R"
coersion
coersion
Data structures
Advanced R Programming
Måns Magnusson
Dimension
Homogenous data
Hetrogenous data
1
vector
list
2
matrix
data.frame
n
array
- Constructors:
- Name dimensions:
vector() list() ...
names() dimnames()
Arithmetics
Advanced R Programming
Måns Magnusson
- Vectorized operations (element wise)
- Recycling
- Statistical functions
See reference card...
Logic and sets
Logic operators
Advanced R Programming
Måns Magnusson
A
B
!A
A&B
A|B
In symbols:
Truth table:
TRUE
FALSE
FALSE
FALSE
TRUE
TRUE
TRUE
FALSE
TRUE
TRUE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
TRUE
TRUE
FALSE
TRUE
In R:
Logic operators
Advanced R Programming
Måns Magnusson
In symbols:
In R:
all(A)
any(A)
which(A)
Relational operators
Advanced R Programming
Måns Magnusson
- Comparing homogenous data structures
- Return boolean data structure
a<b
In symbols:
In R:
a<=b
a!=b
a==b
a%in%b
Subsetting/filtering
Vectors
Advanced R Programming
Måns Magnusson
- Use
- index by:
positive integers: include element(s)
negative integers: exclude element(s)
logical: include s
TRUE
[]
Matrices
Advanced R Programming
Måns Magnusson
- Use
- Two dimensions
- Index as vectors
- Can reduce (drop class) to vector
[,]
Lists
Advanced R Programming
Måns Magnusson
- Use to access list elements
- Use to access list content
- Index as vectors
- Use to access list element by name
[]
[[]]
$
my_list <-
Data frames
Advanced R Programming
Måns Magnusson
- Can be accessed both as a matrix and a list
Assign subset
Advanced R Programming
Måns Magnusson
- Change values in data structures
Intro to functions
Functions
Advanced R Programming
Måns Magnusson
my_function_name <- function(x, y){
z <- x^2 + y^2
return(z)
}
Advanced R - Lecture 1
By monsmagn
Advanced R - Lecture 1
Lecture 1 in the course Advanced R programming at Linköping University.
- 1,882