函数中pbinom的返回值始终为0或1

时间:2013-12-14 12:34:33

标签: r

我试图将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尝试过,但仍然是一样。

1 个答案:

答案 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的向量。如果你想要一堆值“更大”而一些不是。

相关问题