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

- Matloff, N. The art of R programming [online]

- Wickham, H. Advanced R [online]

- Wickham, H. R packages [online]

 

... and articles.

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
A
AA
B
BB
\neg A
¬A\neg A
A \wedge B
ABA \wedge B
A \vee B
ABA \vee B
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

\wedge_{i=1}^N a_i
i=1Nai\wedge_{i=1}^N a_i
\vee_{i=1}^N a_i
i=1Nai\vee_{i=1}^N a_i

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
a < b
a<ba < b

In symbols:

In R:

a<=b
a \leq b
aba \leq b
a!=b
a \neq b
aba \neq b
a==b
a = b
a=ba = b
a \in b
aba \in 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