Функция функции всегда возвращает 0-R - PullRequest
6 голосов
/ 08 марта 2020

У меня проблема с написанием функции функции в r. В частности, я хочу вычислить шансы броска костей в Yahtzee, и когда я использую явные параметры, я получаю числовое значение c:

large_straight <- function(){
  rolls <- sample(6, size = 5, replace = TRUE)
  if(all(Numbers %in% c(rolls))) {
    1
  } else if (all(Numbers2 %in% c(rolls))) {
    1
  } else 0
}

sum(replicate(1000, large_straight()))/1000

возвращает ненулевое значение,

но когда я пытаюсь обобщить, чтобы я мог пропустить не только большие стриты, но и другие броски костей:

my_roll_odds <- function(Size, FUN){
  sum(replicate(Size, FUN))/Size
}

my_roll_odds(1000, large_straight())

Я всегда получаю возвращаемое значение 0, и у меня нет нуля, почему. Любая помощь будет принята с благодарностью!

1 Ответ

1 голос
/ 08 марта 2020

Я думаю, что функция не может быть правильно оценена из-за вложенных вызовов. Вот способ с match.fun

my_roll_odds <- function(Size, FUN){
    sum(replicate(Size, match.fun(FUN)()))/Size
}

my_roll_odds(1000, large_straight)
#[1] 0.029

my_roll_odds(1000, large_straight)
#[1] 0.037
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...