Piping!

Alex Bushby
January 12, 2022

Have you ever done this?

  • function in a function in a function, etc.
#subset(subset(mtcars, mpg > 20), gear == 4)
head(subset(subset(mtcars, mpg > 20), gear == 4), n = 3)
               mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4     21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710    22.8   4  108  93 3.85 2.320 18.61  1  1    4    1

... or this?

  • naming unnecessary objects in R
#subset(subset(mtcars, mpg > 20), gear == 4)
mpg20 <- subset(mtcars, mpg > 20)
gear4mpg20 <- subset(mpg20, gear == 4)
head(gear4mpg20, n = 3)
               mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4     21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710    22.8   4  108  93 3.85 2.320 18.61  1  1    4    1

This is piping:

library(magrittr)
mtcars %>%
  subset(mpg > 20) %>%
  subset(gear == 4) %>%
  head(n = 3)
               mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4     21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710    22.8   4  108  93 3.85 2.320 18.61  1  1    4    1

Important things to know

  • Object in line before automatically assumes the first argument of the next line…
mtcars %>%
  subset(., mpg > 20) %>%
  subset(., gear == 4) %>%
  head(., n = 3)
               mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4     21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710    22.8   4  108  93 3.85 2.320 18.61  1  1    4    1

Important things to know

  • If object in line before goes into an argument other than the first, we put a period where the object should go:
mtcars$VS <- mtcars$vs %>%
  gsub(0, "V-shaped", .) %>% # replace all 0s with V-shaped
  gsub(1, "Straight", .) # replace all 1s with Straight

head(mtcars, n = 3)
               mpg cyl disp  hp drat    wt  qsec vs am gear carb       VS
Mazda RX4     21.0   6  160 110 3.90 2.620 16.46  0  1    4    4 V-shaped
Mazda RX4 Wag 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4 V-shaped
Datsun 710    22.8   4  108  93 3.85 2.320 18.61  1  1    4    1 Straight