Присвоение значений случайно сгенерированной сборке

#r

#r

Вопрос:

 suits <- c("clubs", "hearts", "spades", "diamonds")
face <- c("two","three","four","five","six","seven",
          "eight","nine","ten","jack","queen","king","ace")

deck <- crossing(suit = suits, face_val = face) %>%
  unite(card, face_val, suit, sep = '-') 


deal <- function(deck, handsize) {
  sample_n(deck, size = handsize, replace = TRUE)
}

deal(deck, 5)
  

Итак, по сути, я хочу вычислить общее значение для 5 сгенерированных карт. Так, например, значение для короля будет равно 10 и т. Д. Какими способами было бы лучше всего это сделать. Я полагаю, что я должен каким-то образом присвоить каждой конкретной карте значение, а затем перейти оттуда к вычислению.
Когда я запускаю функцию, я получаю случайный набор из 5 карт.
карточка

например, 1 туз-трефы
2 семерка-пики 3 король-бубны 4 четыре трефы
5 десять бубен, тогда я хочу получить общее значение набора. Так что в этом случае это было бы 11 7 10 4 10=42

Комментарии:

1. напишите вектор, имена которого являются карточками, а элементы — значениями. Затем подмножество соответственно

Ответ №1:

Именованный вектор значений здесь подойдет! Это позволяет вам индексировать по именам, которые у вас есть в качестве выходных данных вашей функции «deal».

 face <- c("two","three","four","five","six","seven",
          "eight","nine","ten","jack","queen","king","ace")
values <- c(2:10, 10, 10, 10, 11)
names(values) <- face

hand <- sample(face, 5)
hand_vals <- values[hand]
hand_total <- sum(hand_vals)