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)
没有任何问题>=
,你的问题是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是一件好事.你可以在这里找到它.
归档时间: |
|
查看次数: |
940 次 |
最近记录: |