использование фигурных скобок в функции репликации в R

#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