#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)