CH20 Vectors

Intro

Vector basics

Types of Atomic Vectors

Using Atomic vectors

sample(10) + 10
##  [1] 14 18 20 11 16 13 15 17 19 12
1:10 + 1:2
##  [1]  2  4  4  6  6  8  8 10 10 12
#1:10 = 1:3
data.frame(a=1:10, b=1:2)
##     a b
## 1   1 1
## 2   2 2
## 3   3 1
## 4   4 2
## 5   5 1
## 6   6 2
## 7   7 1
## 8   8 2
## 9   9 1
## 10 10 2
#data.frame(a=1:10, b=1:3)
x<- sample(1:10)
x
##  [1]  5  7 10  2  6  3  9  1  8  4
x[c(5, 7)]
## [1] 6 9
x[x>5]
## [1]  7 10  6  9  8

Recursive vectors

a <- list(a = 1:3, b = "a string", c = pi, d = list(-1, -5))
a
## $a
## [1] 1 2 3
## 
## $b
## [1] "a string"
## 
## $c
## [1] 3.141593
## 
## $d
## $d[[1]]
## [1] -1
## 
## $d[[2]]
## [1] -5
a[1:2]
## $a
## [1] 1 2 3
## 
## $b
## [1] "a string"
a[[4]]
## [[1]]
## [1] -1
## 
## [[2]]
## [1] -5
a[[4]][2]
## [[1]]
## [1] -5
a[[4]][[2]]
## [1] -5

Attributes

Augmented vectors

CH21 Iteration

Intro

For Loops

# example from cheatsheet
for (i in 1:4){
    j <- i + 10
    print(j)
}
## [1] 11
## [1] 12
## [1] 13
## [1] 14
# example1: numeric calculation- add 10
x<- 11:15

for (i in seq_along(x)) {
    j<- x[i] + 10
    print(j)
}
## [1] 21
## [1] 22
## [1] 23
## [1] 24
## [1] 25
# save output
y<- vector("integer", length(x))

for (i in seq_along(x)) {
    y[i]<- x[i] + 10
    print(y[i])
}
## [1] 21
## [1] 22
## [1] 23
## [1] 24
## [1] 25
# output
y
## [1] 21 22 23 24 25
#example2: string operation- extract first letter
x<- c("abc", "xyz")

y<- vector("character", length(x))

for (i in seq_along(x)) {
    y[i]<- x[i] %>% str_extract("[a-z]")
    print(y[i])
}
## [1] "a"
## [1] "x"
# output
y
## [1] "a" "x"

Loop Variations

Loops vs Functionals

Map Functions

x<- 11:15

for (i in seq_along(x)) {
    j<- x[i] + 10
    print(j)
}
## [1] 21
## [1] 22
## [1] 23
## [1] 24
## [1] 25
# save output
y<- vector("integer", length(x))

for (i in seq_along(x)) {
    y[i]<- x[i] + 10
    print(y[i])
}
## [1] 21
## [1] 22
## [1] 23
## [1] 24
## [1] 25
y
## [1] 21 22 23 24 25
# using map function
x
## [1] 11 12 13 14 15
map(.x= x, .f= ~.x +10)
## [[1]]
## [1] 21
## 
## [[2]]
## [1] 22
## 
## [[3]]
## [1] 23
## 
## [[4]]
## [1] 24
## 
## [[5]]
## [1] 25
map_dbl(.x= x, .f= ~.x +10)
## [1] 21 22 23 24 25
add_10<- function(x) {x+10}
11%>% add_10()
## [1] 21
map_dbl(.x= x, .f= add_10)
## [1] 21 22 23 24 25

Dealing failure