不正确*不正确等于真?

Dar*_*can 2 r logical-operators

由于以下行为,我在代码中遇到了一些问题R:

> F * F
[1] 0

> !T * !T
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下如何避免这种情况吗?

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

!first * !second * !third
Run Code Online (Sandbox Code Playgroud)

如果所有值都是真的,我想得到一个"真".

RHe*_*tel 8

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

如果将这些否定TRUE置于括号中,则可以获得更直观明确的结果:

(!TRUE) * (!TRUE)
[1] 0
Run Code Online (Sandbox Code Playgroud)

在这种情况下,(!TRUE)通过乘法将每个实例强制转换为0,结果显然为0.

然而,操作!TRUE * !TRUE等于,!(TRUE * !TRUE)其又等于!0(并且因此(通过将零强制转换为逻辑的否定FALSE),结果等于TRUE.

总而言之,可以说明你的问题的标题:

NOT(TRUE*NOT(TRUE))等于TRUE.