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.
- 2,104