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)
如果所有值都是真的,我想得到一个"真".
这是运营商的优先事项.否定!的优先级低于乘法.这里给出了一个列表,按运算符优先级的降序排列.此列表也可以显示?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.