【问题标题】:Approximate Equals in RR中的近似等于
【发布时间】:2016-01-22 09:21:15
【问题描述】:

我必须对变量 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))

 } 

}

我已经上传了整个函数以提供一些上下文。目前,如果我使用以下输入运行此函数:

PercentageIncrement(14.29,7) 

我得到以下输出:

[1] "Output: 14.2857142857143"
[1] "Output: 42.8657142857143"
[1] "Output: 71.4457142857143"

这完全正确,只是它缺少第四个输出。在这种情况下,有这些输入,输出应该是 100,但其他输入会在 98 和 102 之间变化。

我该如何解决这个问题?

谢谢

【问题讨论】:

  • 你有奇怪的if 条件。为什么不简单地if(i &gt; 98 &amp; i &lt; 102)
  • 这仍然只输出到 71.4.... 并且不包括 100
  • 我不是说它会解决问题。
  • i &gt; 98 &amp; i &lt; 102 的确切条件是什么?你不想if (i &gt; 102) 吗?
  • 完全不一样。

标签: r if-statement while-loop equality


【解决方案1】:

当它达到 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()

     }

   }

 } 

}

【讨论】:

  • 为什么会出现这些奇怪的 if 条件?
  • 我刚刚复制并粘贴了 OP 的代码。晚上太晚了,我担心教人们正确的编码风格......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-17
  • 1970-01-01
  • 2022-03-23
  • 2013-04-15
  • 2012-05-03
相关资源
最近更新 更多