#r #montecarlo #replicate
Вопрос:
B <- 10000
results <- replicate(B, {
hand <- sample(hands1, 2)
(hand[1] %in% aces amp; hand[2] %in% facecard) | (hand[2] %in% aces amp; hand[1] %in% facecard)
})
mean(results)
этот фрагмент кода работает идеально и выполняет желаемое
, это моделирование по методу Монте-Карло. Я не понимаю, как они помещают фигурные скобки {} в функцию репликации. я могу понять функцию этого кода, но я не могу понять, как они помещают код.
Ответ №1:
Причина в том, что у нас есть несколько выражений
hand <- sample(hands1, 2)
является первым выражением, а второе —
(hand[1] %in% aces amp; hand[2] %in% facecard) | (hand[2] %in% aces amp; hand[1] %in% facecard)
т. е., если есть только одно выражение, нам не нужно блокировать с помощью {}
Это общий случай и не связан с replicate
т. Е. Если мы используем for
цикл с одним выражением, ему не нужно никакого {}
for(i in 1:5)
print(i)
и точно так же, что-то вроде if/else
n <- 5
if(n == 5)
print(n)
Это необходимо только тогда, когда нам нужно более одного выражения
Комментарии:
1. Таким образом, значение, передаваемое функции репликации, является значением второго выражения. Я прав.
2. @NadikaDushan Это множественное выражение, и возвращенное значение получено из последнего оцененного выражения. Первое выражение-это просто
sample
ing, что является основным отличием в каждой из итераций вreplicate