> =不工作,R

use*_*871 0 double logic if-statement r

我正在运行下面的代码.函数Ax返回值1.但是ifelse语句不识别Ax == 1.

我已经尝试使函数的输出为双精度,所有数值都加倍.这没效果.

我希望:
1)帮助解决此特定情况
2)获取有关如何避免此问题的提示

Axfun<-function(beta,gamma,a,b,g,H0stud,Wh,Wi){ 
  ((b*beta + g*gamma)*(1 + 2*g*gamma)*(1 + gamma + b*((-beta)*(1 + gamma) + a*(-1 + beta)*(1 + g*gamma)))*H0stud*Wi)/
    ((-1 + b*beta)*(1 + gamma)*((-g)*gamma*(1 + 2*g*gamma)*Wi + b*beta*((-1 + g*gamma*(-2 + H0stud) + H0stud)*Wh - (1 + g*gamma)*H0stud*Wi)))
}

Ax<-Axfun(2^1,
          2^0,
          2^0,
          2^-3,
          2^-1,
          1,
          1,
          0.4)

ifelse(Ax>=1, 0, Ax)
Run Code Online (Sandbox Code Playgroud)

Sab*_*DeM 5

没有任何问题>=,你的问题是1不是真的.试试这个

Ax >= 1
[1] FALSE
Ax == 1
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

format(Ax, digits = 20)
[1] "0.99999999999999977796"
Run Code Online (Sandbox Code Playgroud)

编辑:可能的解决方案

作为问题的解决方案,您可以将函数的最终结果返回给对象,然后将其用作ceiling函数.

如果您必须使用此类结果,可能需要阅读R Inferno的Circle 1是一件好事.你可以在这里找到它.