R if if语句,跳过if而只是做其他的

时间:2012-12-20 03:00:40

标签: r if-statement

  

可能重复:
  Why are these numbers not equal?

以下R代码是更大函数的一部分,它不断跳过if语句,只是在结尾处执行else语句。有什么建议?感谢

if(solv==0){
theta<-pi/2
} else if(solv==1){
theta<-0
}  else if(solv==-1) {
theta<-pi
}  else{
comb<-top/bottom

theta<-acos(comb)}

1 个答案:

答案 0 :(得分:0)

重要的问题是,solve整数吗?

如果没有,那么正如@GSee在您的问题的评论中提到的那样,您的代码中的错误与floating point errors

相关

请尝试以下

# Set whichever tolerance is acceptable to you
tol <- 1e-16

if(isTRUE(all.equal(solv, 0, tolerance=tol))){
theta<-pi/2
} else if(isTRUE(all.equal(solv, 1, tolerance=tol))){
theta<-0
}  else if(isTRUE(all.equal(solv, -1, tolerance=tol))) {
theta<-pi
}  else{
comb<-top/bottom

theta<-acos(comb)}