title: “Week 13: Code Along 12” subtitle: “R For Data Science: Chapter 20 & 21” author: “Declan Fogarty” date: “2025-06-23” output: html_document editor_options: chunk_output_type: console —

Ch 20

Introduction

Vector basics

Important types of atomic vector

Using atomic vectors

sample (10) + 10
##  [1] 16 15 12 14 19 20 13 17 18 11
1:10 + 1:2
##  [1]  2  4  4  6  6  8  8 10 10 12
1:10 + 1:3
## Warning in 1:10 + 1:3: longer object length is not a multiple of shorter object
## length
##  [1]  2  4  6  5  7  9  8 10 12 11
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 (10)
x
##  [1]  3 10  2  4  7  6  8  1  5  9
x[c(5, 7)]
## [1] 7 8
x[x>5]
## [1] 10  7  6  8  9

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

CH 21

Introduction

For loops

# Example 1: Add 10 to each number in x

# First for loop (this works as-is)
for (i in 1:4) {
  j <- i + 10
  print(j)
}
## [1] 11
## [1] 12
## [1] 13
## [1] 14
# Vector x
x <- 11:15

# Second for loop (needs braces!)
for (i in seq_along(x)) {
  j <- x[i] + 10
  print(j)
}
## [1] 21
## [1] 22
## [1] 23
## [1] 24
## [1] 25
# Now create and fill vector y
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 vector y
y
## [1] 21 22 23 24 25

For loop variations

For loops vs. functionals

The map functions

x <- 11:15

# map returns a list
map(.x = x, .f = ~.x + 10)
## [[1]]
## [1] 21
## 
## [[2]]
## [1] 22
## 
## [[3]]
## [1] 23
## 
## [[4]]
## [1] 24
## 
## [[5]]
## [1] 25
# map_dbl returns a numeric vector
map_dbl(.x = x, .f = ~.x + 10)
## [1] 21 22 23 24 25
# Define a function
add_10 <- function(x) {
  x + 10
}

# Use the function with pipe
11 %>% add_10()
## [1] 21
# Use map_dbl with your function
map_dbl(.x = x, .f = add_10)
## [1] 21 22 23 24 25