SlideShare a Scribd company logo
Hadley Wickham
Stat405Data structures
Thursday, 11 November 2010
Assessment
• Final: there is no final
• Two groups still haven’t sent me
electronic versions of their project
• Many of you STILL HAVEN’T returned
your team evaluations
Thursday, 11 November 2010
1. Basic data types
2. Vectors, matrices & arrays
3. Lists & data.frames
Thursday, 11 November 2010
Vector
Matrix
Array
List
Data frame
1d
2d
nd
Same types Different types
Thursday, 11 November 2010
character
numeric
logical
mode()
length() A scalar is a vector of length 1
as.character(c(T, F))
as.character(seq_len(5))
as.logical(c(0, 1, 100))
as.logical(c("T", "F", "a"))
as.numeric(c("A", "100"))
as.numeric(c(T, F))
When vectors of
different types occur
in an expression,
they will be
automatically
coerced to the same
type: character >
numeric > logical
names() Optional, but useful
Technically, these are all atomic vectors
Thursday, 11 November 2010
Your turn
Experiment with automatic coercion.
What is happening in the following cases?
104 & 2 < 4
mean(diamonds$cut == "Good")
c(T, F, T, T, "F")
c(1, 2, 3, 4, F)
Thursday, 11 November 2010
Matrix (2d)
Array (>2d)
a <- seq_len(12)
dim(a) <- c(1, 12)
dim(a) <- c(4, 3)
dim(a) <- c(2, 6)
dim(a) <- c(3, 2, 2)
1 5 9
2 6 10
3 7 11
4 8 12
1 2 3 4 5 6 7 8 9 10 11 12
1 3 5 7 9 11
2 4 6 8 10 12
(1, 12)
(4, 3) (2, 6)Just like a vector.
Has mode() and
length().
Create with matrix
() or array(), or
from a vector by
setting dim()
as.vector()
converts back to a
vector
Thursday, 11 November 2010
List
Is also a vector (so has
mode, length and names),
but is different in that it can
store any other vector inside
it (including lists).
Use unlist() to convert to
a vector. Use as.list() to
convert a vector to a list.
c(1, 2, c(3, 4))
list(1, 2, list(3, 4))
c("a", T, 1:3)
list("a", T, 1:3)
a <- list(1:3, 1:5)
unlist(a)
as.list(a)
b <- list(1:3, "a", "b")
unlist(b)
Technically a recursive vector
Thursday, 11 November 2010
Data frame
List of vectors, each of the
same length. (Cross
between list and matrix)
Different to matrix in that
each column can have a
different type
Thursday, 11 November 2010
# How do you convert a matrix to a data frame?
# How do you convert a data frame to a matrix?
# What is different?
# What does these subsetting operations do?
# Why do they work? (Remember to use str)
diamonds[1]
diamonds[[1]]
diamonds[["cut"]]
Thursday, 11 November 2010
x <- sample(12)
# What's the difference between a & b?
a <- matrix(x, 4, 3)
b <- array(x, c(4, 3))
# What's the difference between x & y
y <- matrix(x, 12)
# How are these subsetting operations different?
a[, 1]
a[, 1, drop = FALSE]
a[1, ]
a[1, , drop = FALSE]
Thursday, 11 November 2010
1d names() length() c()
2d
colnames()
rownames()
ncol()
nrow()
cbind()
rbind()
nd dimnames() dim() abind()
(special package)
Thursday, 11 November 2010
b <- seq_len(10)
a <- letters[b]
# What sort of matrix does this create?
rbind(a, b)
cbind(a, b)
# Why would you want to use a data frame here?
# How would you create it?
Thursday, 11 November 2010
load(url("http://had.co.nz/stat405/data/quiz.rdata"))
# What is a? What is b?
# How are they different? How are they similar?
# How can you turn a in to b?
# How can you turn b in to a?
# What are c, d, and e?
# How are they different? How are they similar?
# How can you turn one into another?
# What is f?
# How can you extract the first element?
# How can you extract the first value in the first
# element?
Thursday, 11 November 2010
# a is numeric vector, containing the numbers 1 to 10
# b is a list of numeric scalars
# they contain the same values, but in a different format
identical(a[1], b[[1]])
identical(a, unlist(b))
identical(b, as.list(a))
# c is a named list
# d is a data.frame
# e is a numeric matrix
# From most to least general: c, d, e
identical(c, as.list(d))
identical(d, as.data.frame(c))
identical(e, data.matrix(d))
Thursday, 11 November 2010
# f is a list of matrices of different dimensions
f[[1]]
f[[1]][1, 2]
Thursday, 11 November 2010
# What does these subsetting operations do?
# Why do they work? (Remember to use str)
diamonds[1]
diamonds[[1]]
diamonds[["cut"]]
diamonds[["cut"]][1:10]
diamonds$cut[1:10]
Thursday, 11 November 2010
Vectors x[1:4] —
Matrices
Arrays
x[1:4, ]
x[, 2:3, ]
x[1:4, ,
drop = F]
Lists
x[[1]]
x$name
x[1]
Thursday, 11 November 2010
# What's the difference between a & b?
a <- matrix(x, 4, 3)
b <- array(x, c(4, 3))
# What's the difference between x & y
y <- matrix(x, 12)
# How are these subsetting operations different?
a[, 1]
a[, 1, drop = FALSE]
a[1, ]
a[1, , drop = FALSE]
Thursday, 11 November 2010
1d c()
2d
matrix()
data.frame()
t()
nd array() aperm()
Thursday, 11 November 2010
b <- seq_len(10)
a <- letters[b]
# What sort of matrix does this create?
rbind(a, b)
cbind(a, b)
# Why would you want to use a data frame here?
# How would you create it?
Thursday, 11 November 2010

More Related Content

PDF
PDF
PDF
R packages
PDF
Use Neo4j In Your Next Java Project
PPTX
2. R-basics, Vectors, Arrays, Matrices, Factors
PPTX
hands on: Text Mining With R
PDF
Data Modeling, Normalization, and Denormalisation | FOSDEM '19 | Dimitri Font...
R packages
Use Neo4j In Your Next Java Project
2. R-basics, Vectors, Arrays, Matrices, Factors
hands on: Text Mining With R
Data Modeling, Normalization, and Denormalisation | FOSDEM '19 | Dimitri Font...

What's hot (9)

PDF
Introduction to R Programming
PDF
Data Modeling, Normalization and Denormalization | Nordic PGDay 2018 | Dimitr...
PDF
D bpedia
PPTX
Databases for Beginners SQLite
PPTX
SQL with PostgreSQL - Getting Started
PPTX
Introduction to pandas
PDF
R Introduction
DOCX
What is data structure
Introduction to R Programming
Data Modeling, Normalization and Denormalization | Nordic PGDay 2018 | Dimitr...
D bpedia
Databases for Beginners SQLite
SQL with PostgreSQL - Getting Started
Introduction to pandas
R Introduction
What is data structure
Ad

Viewers also liked (20)

PDF
02 Ddply
PDF
27 development
PDF
03 Modelling
PDF
01 Intro
PDF
Graphical inference
PDF
Reshaping Data in R
PDF
27 development
PDF
Plyr, one data analytic strategy
PPT
Correlations, Trends, and Outliers in ggplot2
PDF
04 Wrapup
PDF
24 modelling
PDF
16 Sequences
PDF
20 date-times
PDF
Model Visualisation (with ggplot2)
PDF
03 Conditional
PDF
R workshop iii -- 3 hours to learn ggplot2 series
PDF
Dplyr and Plyr
PPTX
Machine learning in R
PDF
4 R Tutorial DPLYR Apply Function
PDF
Data manipulation with dplyr
02 Ddply
27 development
03 Modelling
01 Intro
Graphical inference
Reshaping Data in R
27 development
Plyr, one data analytic strategy
Correlations, Trends, and Outliers in ggplot2
04 Wrapup
24 modelling
16 Sequences
20 date-times
Model Visualisation (with ggplot2)
03 Conditional
R workshop iii -- 3 hours to learn ggplot2 series
Dplyr and Plyr
Machine learning in R
4 R Tutorial DPLYR Apply Function
Data manipulation with dplyr
Ad

Similar to 23 data-structures (20)

PDF
11 Data Structures
PPTX
R Programming Tutorial for Beginners - -TIB Academy
PPTX
A quick introduction to R
PDF
R training3
PDF
3 Data Structure in R
PDF
2 data structure in R
PDF
R training2
PDF
8. Vectors data frames
PDF
R language, an introduction
PPTX
Language R
PDF
6. R data structures
PDF
Day 1b R structures objects.pptx
PPTX
Ggplot2 v3
PPTX
R교육1
PPTX
R1-Intro (2udsjhfkjdshfkjsdkfhsdkfsfsffs
PPT
R tutorial for a windows environment
PDF
Statistics lab 1
PDF
SessionFour_DataTypesandObjects
PPT
R Programming Intro
PDF
Vectors data frames
 
11 Data Structures
R Programming Tutorial for Beginners - -TIB Academy
A quick introduction to R
R training3
3 Data Structure in R
2 data structure in R
R training2
8. Vectors data frames
R language, an introduction
Language R
6. R data structures
Day 1b R structures objects.pptx
Ggplot2 v3
R교육1
R1-Intro (2udsjhfkjdshfkjsdkfhsdkfsfsffs
R tutorial for a windows environment
Statistics lab 1
SessionFour_DataTypesandObjects
R Programming Intro
Vectors data frames
 

More from Hadley Wickham (20)

PDF
19 tables
PDF
18 cleaning
PDF
17 polishing
PDF
16 critique
PDF
15 time-space
PDF
14 case-study
PDF
13 case-study
PDF
12 adv-manip
PDF
11 adv-manip
PDF
11 adv-manip
PDF
10 simulation
PDF
10 simulation
PDF
09 bootstrapping
PDF
08 functions
PDF
07 problem-solving
PDF
PDF
05 subsetting
PDF
04 reports
PDF
03 extensions
PDF
02 large
19 tables
18 cleaning
17 polishing
16 critique
15 time-space
14 case-study
13 case-study
12 adv-manip
11 adv-manip
11 adv-manip
10 simulation
10 simulation
09 bootstrapping
08 functions
07 problem-solving
05 subsetting
04 reports
03 extensions
02 large

Recently uploaded (20)

PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Electronic commerce courselecture one. Pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Big Data Technologies - Introduction.pptx
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPTX
Spectroscopy.pptx food analysis technology
PDF
Encapsulation theory and applications.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Approach and Philosophy of On baking technology
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Unlocking AI with Model Context Protocol (MCP)
Electronic commerce courselecture one. Pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
MIND Revenue Release Quarter 2 2025 Press Release
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Programs and apps: productivity, graphics, security and other tools
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Reach Out and Touch Someone: Haptics and Empathic Computing
The AUB Centre for AI in Media Proposal.docx
The Rise and Fall of 3GPP – Time for a Sabbatical?
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Empathic Computing: Creating Shared Understanding
Big Data Technologies - Introduction.pptx
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Spectroscopy.pptx food analysis technology
Encapsulation theory and applications.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Approach and Philosophy of On baking technology
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...

23 data-structures

  • 2. Assessment • Final: there is no final • Two groups still haven’t sent me electronic versions of their project • Many of you STILL HAVEN’T returned your team evaluations Thursday, 11 November 2010
  • 3. 1. Basic data types 2. Vectors, matrices & arrays 3. Lists & data.frames Thursday, 11 November 2010
  • 4. Vector Matrix Array List Data frame 1d 2d nd Same types Different types Thursday, 11 November 2010
  • 5. character numeric logical mode() length() A scalar is a vector of length 1 as.character(c(T, F)) as.character(seq_len(5)) as.logical(c(0, 1, 100)) as.logical(c("T", "F", "a")) as.numeric(c("A", "100")) as.numeric(c(T, F)) When vectors of different types occur in an expression, they will be automatically coerced to the same type: character > numeric > logical names() Optional, but useful Technically, these are all atomic vectors Thursday, 11 November 2010
  • 6. Your turn Experiment with automatic coercion. What is happening in the following cases? 104 & 2 < 4 mean(diamonds$cut == "Good") c(T, F, T, T, "F") c(1, 2, 3, 4, F) Thursday, 11 November 2010
  • 7. Matrix (2d) Array (>2d) a <- seq_len(12) dim(a) <- c(1, 12) dim(a) <- c(4, 3) dim(a) <- c(2, 6) dim(a) <- c(3, 2, 2) 1 5 9 2 6 10 3 7 11 4 8 12 1 2 3 4 5 6 7 8 9 10 11 12 1 3 5 7 9 11 2 4 6 8 10 12 (1, 12) (4, 3) (2, 6)Just like a vector. Has mode() and length(). Create with matrix () or array(), or from a vector by setting dim() as.vector() converts back to a vector Thursday, 11 November 2010
  • 8. List Is also a vector (so has mode, length and names), but is different in that it can store any other vector inside it (including lists). Use unlist() to convert to a vector. Use as.list() to convert a vector to a list. c(1, 2, c(3, 4)) list(1, 2, list(3, 4)) c("a", T, 1:3) list("a", T, 1:3) a <- list(1:3, 1:5) unlist(a) as.list(a) b <- list(1:3, "a", "b") unlist(b) Technically a recursive vector Thursday, 11 November 2010
  • 9. Data frame List of vectors, each of the same length. (Cross between list and matrix) Different to matrix in that each column can have a different type Thursday, 11 November 2010
  • 10. # How do you convert a matrix to a data frame? # How do you convert a data frame to a matrix? # What is different? # What does these subsetting operations do? # Why do they work? (Remember to use str) diamonds[1] diamonds[[1]] diamonds[["cut"]] Thursday, 11 November 2010
  • 11. x <- sample(12) # What's the difference between a & b? a <- matrix(x, 4, 3) b <- array(x, c(4, 3)) # What's the difference between x & y y <- matrix(x, 12) # How are these subsetting operations different? a[, 1] a[, 1, drop = FALSE] a[1, ] a[1, , drop = FALSE] Thursday, 11 November 2010
  • 12. 1d names() length() c() 2d colnames() rownames() ncol() nrow() cbind() rbind() nd dimnames() dim() abind() (special package) Thursday, 11 November 2010
  • 13. b <- seq_len(10) a <- letters[b] # What sort of matrix does this create? rbind(a, b) cbind(a, b) # Why would you want to use a data frame here? # How would you create it? Thursday, 11 November 2010
  • 14. load(url("http://had.co.nz/stat405/data/quiz.rdata")) # What is a? What is b? # How are they different? How are they similar? # How can you turn a in to b? # How can you turn b in to a? # What are c, d, and e? # How are they different? How are they similar? # How can you turn one into another? # What is f? # How can you extract the first element? # How can you extract the first value in the first # element? Thursday, 11 November 2010
  • 15. # a is numeric vector, containing the numbers 1 to 10 # b is a list of numeric scalars # they contain the same values, but in a different format identical(a[1], b[[1]]) identical(a, unlist(b)) identical(b, as.list(a)) # c is a named list # d is a data.frame # e is a numeric matrix # From most to least general: c, d, e identical(c, as.list(d)) identical(d, as.data.frame(c)) identical(e, data.matrix(d)) Thursday, 11 November 2010
  • 16. # f is a list of matrices of different dimensions f[[1]] f[[1]][1, 2] Thursday, 11 November 2010
  • 17. # What does these subsetting operations do? # Why do they work? (Remember to use str) diamonds[1] diamonds[[1]] diamonds[["cut"]] diamonds[["cut"]][1:10] diamonds$cut[1:10] Thursday, 11 November 2010
  • 18. Vectors x[1:4] — Matrices Arrays x[1:4, ] x[, 2:3, ] x[1:4, , drop = F] Lists x[[1]] x$name x[1] Thursday, 11 November 2010
  • 19. # What's the difference between a & b? a <- matrix(x, 4, 3) b <- array(x, c(4, 3)) # What's the difference between x & y y <- matrix(x, 12) # How are these subsetting operations different? a[, 1] a[, 1, drop = FALSE] a[1, ] a[1, , drop = FALSE] Thursday, 11 November 2010
  • 20. 1d c() 2d matrix() data.frame() t() nd array() aperm() Thursday, 11 November 2010
  • 21. b <- seq_len(10) a <- letters[b] # What sort of matrix does this create? rbind(a, b) cbind(a, b) # Why would you want to use a data frame here? # How would you create it? Thursday, 11 November 2010