Deck of Cards

| 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