为什么R中的'if语句'在没有逻辑条件的情况下得到计算?

为什么R中的'if语句'在没有逻辑条件的情况下得到计算?,r,R,我注意到,如果我将0以外的任何数字作为参数传递给if语句,则if语句中的代码将编译。我不明白为什么会这样!我知道R在内部将0识别为FALSE,如果条件未被计算,则中的语句没有被计算,这是有道理的,但为什么它会被计算为其他数字 if(5){ 5 * 5 } 我原以为会出现错误,但代码编译后,我得到了25个答案。从if帮助页面中,if期望: 一个长度为1的逻辑向量。。。如果可能,其他类型强制为逻辑类型,忽略任何类 基本上是这样的 as.logical(5) # [1] TRUE 既然是5!=0,

我注意到,如果我将0以外的任何数字作为参数传递给
if语句
,则
if语句
中的代码将编译。我不明白为什么会这样!我知道R在内部将0识别为FALSE,如果条件未被计算,则
中的语句没有被计算,这是有道理的,但为什么它会被计算为其他数字

if(5){
5 * 5
}

我原以为会出现错误,但代码编译后,我得到了25个答案。

if
帮助页面中,
if
期望:

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

基本上是这样的

as.logical(5)
# [1] TRUE
既然是
5!=0,没错

as.logical(0)
# [1] FALSE

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

现在它有了意义!但你知道为什么像你指出的那样,将0旁边的数字解释为“真”是许多语言的一个例子吗?我只是好奇@阿什瓦德似乎在这里被问到了这个问题:似乎对此进行了彻底的讨论。谢谢你给我指出这个资源!