函数的函数总是返回 0-R

Rya*_*met 6 functional-programming r

我在 r 中编写函数的函数时遇到问题。具体来说,我想计算 Yahtzee 中掷骰子的几率,当我使用显式参数时,我得到一个数值:

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
Run Code Online (Sandbox Code Playgroud)

返回一个非零值,

但是当我尝试概括时,这样我不仅可以通过大的直道,还可以通过其他掷骰子:

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

my_roll_odds(1000, large_straight())
Run Code Online (Sandbox Code Playgroud)

我总是得到 0 的返回值,我不知道为什么。任何帮助将不胜感激!

Ron*_*hah 1

我认为由于嵌套调用,该函数无法正确评估。这是一种方法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
Run Code Online (Sandbox Code Playgroud)