Я новичок в R, и у меня есть небольшая проблема. У меня есть следующий код для моего игрового автомата в R (из «практического программирования с R» от Гаррета Гролемунда.
Когда я использую функцию play() для своего игрового автомата, как вы можете видеть ниже, я получаю одно число, которое говорит мне, сколько я выиграл. Когда я использую следующий код для воспроизведения результата:
slot.mach <- replicate(1000,play())
R печатает все 1000 примеров в моей консоли. Чего я не понимаю, так это того, что когда я использую ту же функцию репликации на моей паре игральных костей, которая также имеет одно число в качестве результата, она не печатает все броски, а вместо этого просто добавляет их как вектор к моему объекту, и я можно сразу использовать qplot (это то, что я хочу и со своим игровым автоматом).
Я, очевидно, не хочу, чтобы все они были напечатаны, так как это занимает много времени и места, и мне не нужно видеть все результаты.
Я предполагаю, что это может иметь какое-то отношение к классу и типу объекта, см. ниже:
[1] "integer"
> typeof(slot.mach)
[1] "double"
> class(slot.mach)
[1] "numeric"
> typeof(roll.dice)
[1] "integer"
> class(roll.dice)
[1] "integer"
Не знаю, важно ли для вас помочь мне, но вот весь код для моего игрового автомата:
score <- function(symbols) {
#identify case of symbols frequency
same <- length(unique(symbols)) == 1
bars <- symbols %in% c("B","BB","BBB")
#get prize
if (same) {
payouts <- c("DD" = 100,"7" = 80, "BBB" = 40, "BB" = 25, "B" = 10, "C" = 10,
"0" = 0)
prize <- unname(payouts[symbols[1]])
} else if (all(bars)){
prize <- 5
} else {
cherries <- sum(symbols == "C")
prize <- c(0,2,5)[cherries+1]
}
#adjust for diamonds
diamonds <- sum(symbols == "DD")
prize <- prize*(2^diamonds)
}
Затем я могу воспроизвести функцию:
play <- function() {
get_symbols <- function() {
wheel <- c("DD","7","BBB","BB","B","C","0")
sample(wheel,size=3,replace=TRUE,
prob=c(0.03,0.03,0.06,0.1,0.25,0.01,0.52))
symbols <- get_symbols()
print(score(symbols))
}
Наконец, я получаю результат печати, поэтому каждая "play()" дает мне номер. Обычно это ноль, иногда небольшая сумма (вероятности вы можете увидеть выше).
вот моя функция игры в кости
roll.dice <- function(){x <- 1:6
y <- c(1/8,1/8,1/8,1/8,1/8,3/8)
dice<-sample(x,size=2,replace=TRUE,prob=y)
sum(dice)}
roll.dice <- replicate(10000,roll.dice())
play
здесь неполная. Вы либо пропустили закрывающую скобку дляget_symbols
, либо дляplay
. - person De Novo   schedule 24.03.2018