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 的返回值,我不知道为什么。任何帮助将不胜感激!
我认为由于嵌套调用,该函数无法正确评估。这是一种方法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)
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |