| August 8, 2022
Years ago, I had to simulate a deck of playing cards in a Python course. Oddly enough, I don’t recall ever carrying out this task in R. Today, I saw a neat code snippet about the crossing()
command in tidyr
by Tan Ho in the R4DS
Slack channel, so let us give it a try.
library("tidyverse")
suit <- c("D", "H", "C", "S")
rank <- c(2:10, "J", "Q", "K", "A")
deck <- tidyr::crossing(rank, suit) |>
dplyr::mutate(card = paste0(rank, suit))
This yields a data frame with 3 columns: rank
, suit
, card
.
deck |> as_tibble() |> print(n = Inf)
## # A tibble: 52 × 3
## rank suit card
## <chr> <chr> <chr>
## 1 10 C 10C
## 2 10 D 10D
## 3 10 H 10H
## 4 10 S 10S
## 5 2 C 2C
## 6 2 D 2D
## 7 2 H 2H
## 8 2 S 2S
## 9 3 C 3C
## 10 3 D 3D
## 11 3 H 3H
## 12 3 S 3S
## 13 4 C 4C
## 14 4 D 4D
## 15 4 H 4H
## 16 4 S 4S
## 17 5 C 5C
## 18 5 D 5D
## 19 5 H 5H
## 20 5 S 5S
## 21 6 C 6C
## 22 6 D 6D
## 23 6 H 6H
## 24 6 S 6S
## 25 7 C 7C
## 26 7 D 7D
## 27 7 H 7H
## 28 7 S 7S
## 29 8 C 8C
## 30 8 D 8D
## 31 8 H 8H
## 32 8 S 8S
## 33 9 C 9C
## 34 9 D 9D
## 35 9 H 9H
## 36 9 S 9S
## 37 A C AC
## 38 A D AD
## 39 A H AH
## 40 A S AS
## 41 J C JC
## 42 J D JD
## 43 J H JH
## 44 J S JS
## 45 K C KC
## 46 K D KD
## 47 K H KH
## 48 K S KS
## 49 Q C QC
## 50 Q D QD
## 51 Q H QH
## 52 Q S QS