【问题标题】:How to continue a while loop while the condition is false in r?当r中的条件为假时如何继续while循环?
【发布时间】:2021-08-02 21:38:05
【问题描述】:

我有这个while循环:

while (abs(B-left)<INFSMALL | abs(B-right)<INFSMALL) {
...
} 

我希望它在上述条件为 FALSE 时运行。有没有简单的方法可以做到这一点?

【问题讨论】:

    标签: r while-loop boolean conditional-statements


    【解决方案1】:

    使用以下之一:

    1. 通过用!(.) 包裹整个条件来否定整个条件,如

      while (!(abs(B-left) < INFSMALL || abs(B-right) < INFSMALL)) {
      ...
      }
      
    2. 将里面的组件取反,从OR变为AND:

      while (abs(B-left) >= INFSMALL && abs(B-right) >= INFSMALL) {
      ...
      }
      

    您应该使用|| 而不是|,请参阅Boolean operators && and ||。流控制函数ifwhile 需要条件恰好是长度为1,而不是0,不超过1。而| 将产生一个长度为1 的向量,如果所有参数的长度都是1,这仍然是一个坏主意有两个原因:

    1. 短路:一般来说,如果第一个(多个链接的)条件表明第二个(及以后的)条件无关紧要,那么短路意味着它不会评估它们.比如不预定义aa,比较

      exists("aa") && aa > 0
      # [1] FALSE
      exists("aa") & aa > 0
      # Error: object 'aa' not found
      
    2. 声明性代码:控制流 while 必须只取长度为 1,确保您知道其中的内容。这可能有点风格,所以上面的 #1 .

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-07
      • 1970-01-01
      • 2023-01-11
      • 2019-10-26
      • 1970-01-01
      • 2017-02-03
      • 2020-08-19
      • 2017-01-30
      相关资源
      最近更新 更多