为什么R中的`if语句'在没有逻辑条件的情况下被评估?

时间:2019-04-17 21:46:29

标签: r

我注意到,如果将{0}以外的任何数字作为参数传递给if statement,则if statement内部的代码将被编译。我很困惑为什么会这样!我知道R在内部将0识别为FALSE,并且if condition内的语句未进行评估,这是有道理的,但是为什么要对其他数字进行评估?

if(5) {
5 * 5
}

我原本希望我会得到一个错误,但是代码可以编译,我得到25作为答案。

1 个答案:

答案 0 :(得分:6)

if帮助页面上,if期望:

  

长度为1的逻辑向量...如果可能,将其他类型强制为逻辑,而忽略任何类

所以基本上可以做到

as.logical(5)
# [1] TRUE

由于它是5 != 0,所以是真的

as.logical(0)
# [1] FALSE

在语言中很常见,任何非0的数字都被解释为“真”