any() 和 if 语句背后的逻辑

The logic behind any() and if-statement

我有一个代码试图实现其中的一部分:

我有矩阵 A 为:

0.241 0.095 0.695
0.002 0.774 0.590
0.991 0.406 0.997
0.435 0.217 0.087
0.729 0.898 0.343

我不明白这句话背后的逻辑:

if ((any(0.250 <= A[ ,3] & A[ ,3] <= 0.375)) == FALSE) {
   print("Done")
}

A[ ,3] 给出 0.695 0.590 0.997 0.087 0.343

0.250 <= A[ ,3] 给出 TRUE TRUE TRUE FALSE TRUE

A[ ,3] <= 0.375 给出 FALSE FALSE FALSE TRUE TRUE

和 if 语句 returns 什么都没有,但是,当我将 0.250 更改为 0.4 时:

0.4 <= A[ ,3] 给出 TRUE TRUE TRUE FALSE FALSE

A[ ,3] <= 0.375 给出 FALSE FALSE FALSE TRUE TRUE

这次if语句打印"Done"

是关于FALSETRUE的数量吗?

这是非常丑陋的逻辑,等效且更简单的代码if (all(A[ ,3] < 0.250 | A[ ,3] > 0.375))

第一种情况,0.250 <= A[ ,3] & A[ ,3] <= 0.375 returns FALSE FALSE FALSE FALSE TRUE,只有当两个语句都是TRUE时,逻辑&才返回TRUE . any() 函数然后检查传递给它的任何值是否计算为 TRUE。因此,returns TRUE 在这种情况下,不满足条件并且不进入循环。

第二种情况,0.4 <= A[ ,3] & A[ ,3] <= 0.375returnsFALSE FALSE FALSE FALSE FALSE所以any()函数returnsFALSE满足条件进入循环.