以下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)}
答案 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)}