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"
是关于FALSE
或TRUE
的数量吗?
这是非常丑陋的逻辑,等效且更简单的代码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.375
returnsFALSE FALSE FALSE FALSE FALSE
所以any()
函数returnsFALSE
满足条件进入循环.
我有一个代码试图实现其中的一部分:
我有矩阵 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"
是关于FALSE
或TRUE
的数量吗?
这是非常丑陋的逻辑,等效且更简单的代码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.375
returnsFALSE FALSE FALSE FALSE FALSE
所以any()
函数returnsFALSE
满足条件进入循环.