我试图将pbinom集成到一个函数中,但我只得到1或0作为回报。
> PWert <- function(n, k, p0, side){
+ ifelse(side=="greater", return(1-pbinom(k-1,n,p0)), return(pbinom(k,n,p0)))
+ }
> PWert(6,10,0.5,"greater")
[1] 0
> 1-pbinom(6-1,10,0.5)
[1] 0.3769531
我的猜测是,函数以某种方式将值向上/向下舍入为1或0.但我真的不明白为什么?我也没有ifelse尝试过,但仍然是一样。
答案 0 :(得分:2)
ifelse
功能不用于控制流程。你可以写:
if (side=='greater')
return(1-pbinom(k-1,n,p0))
else
return(pbinom(k,n,p0)))
有趣的是,您可以使用ifelse
函数通过删除return
来对您的函数进行矢量化:
PWert <- function(n, k, p0, side)
ifelse(side=="greater", 1-pbinom(k-1,n,p0), pbinom(k,n,p0))
现在您可以提供side
的向量。如果你想要一堆值“更大”而一些不是。