不正确 * 不正确等于正确吗?

not true * not true equals true?

由于 R 的以下行为,我的代码出现了一些问题:

> F * F
[1] 0

> !T * !T
[1] TRUE

谁能告诉我如何避免这种情况?

我需要将一些值相乘并得到逻辑乘法的结果:

!first * !second * !third

我想得到 "True" 只有当所有值都为真时。

这是运营商的优先事项。否定 ! 的优先级低于乘法。 给出了一个列表,按照运算符优先级的降序排列 here。此列表也可以用 ?Syntax.

显示

如果TRUE的否定放在大括号中,得到的结果更直观:

(!TRUE) * (!TRUE)
[1] 0

在这种情况下,(!TRUE)的每个实例都被乘法强制为0,结果显然是0。

但是,操作 !TRUE * !TRUE 等于 !(TRUE * !TRUE),后者又等于 !0,因此(否定将零强制转换为逻辑 FALSE), 结果等于 TRUE.

总而言之,解释一下你的问题的标题,可以说:

NOT(TRUE * NOT(TRUE)) 等于 TRUE。