R中的近似等于

R中的近似等于,r,if-statement,while-loop,equality,R,If Statement,While Loop,Equality,我必须对变量I执行一个等式,直到它“大约等于”100,但我似乎无法让它工作 通过近似等于,我指的是100的+/-2公差 我有一个带有几个if语句的while(TRUE)循环,但我似乎无法使if正确工作 以下是我目前的情况: PercentageIncrement <- function(RainPerc,Duration) { i = RainfallDepthChange(Duration) print(paste0("Output: ", i)) while(TRUE) {

我必须对变量I执行一个等式,直到它“大约等于”100,但我似乎无法让它工作

通过近似等于,我指的是100的+/-2公差

我有一个带有几个if语句的while(TRUE)循环,但我似乎无法使if正确工作

以下是我目前的情况:

PercentageIncrement <- function(RainPerc,Duration) {

 i = RainfallDepthChange(Duration)

 print(paste0("Output: ", i))

 while(TRUE) {

   i = i+(RainPerc*2)

   if (i > 98) { 

     if (i < 102) { 

       break()

     }

   }

   print(paste0("Output: ", i))

 } 

}
我得到以下输出:

[1] "Output: 14.2857142857143"
[1] "Output: 42.8657142857143"
[1] "Output: 71.4457142857143"
这完全正确,只是缺少第四个输出。在这种情况下,对于这些输入,输出应精确为100,但其他输入将在98和102之间变化

我该如何着手解决这个问题


谢谢

当它达到100时,您将中断该功能,因此它不会打印数字。只需移动到打印输出的位置,您就会很好:

PercentageIncrement <- function(RainPerc,Duration) {

 i = RainfallDepthChange(Duration)

 print(paste0("Output: ", i))

 while(TRUE) {

   i = i+(RainPerc*2)

   print(paste0("Output: ", i))

   if (i > 98) { 

     if (i < 102) { 

       break()

     }

   }

 } 

}
PercentageIncrement 98){
如果(i<102){
break()
}
}
} 
}

您有奇怪的
if
条件。为什么不干脆
if(i>98&i<102)
?这仍然只输出到71.4。。。。不包括100I并不意味着它能解决问题。那是什么条件呢?
i>98&i<102
?你不想要
if(i>102)
?这根本不一样。为什么会出现这些奇怪的if条件?我只是复制并粘贴了OP的代码。对于我来说,在晚上教人们正确的编码风格已经太晚了。。。
PercentageIncrement <- function(RainPerc,Duration) {

 i = RainfallDepthChange(Duration)

 print(paste0("Output: ", i))

 while(TRUE) {

   i = i+(RainPerc*2)

   print(paste0("Output: ", i))

   if (i > 98) { 

     if (i < 102) { 

       break()

     }

   }

 } 

}