我注意到,如果将{0}以外的任何数字作为参数传递给if statement
,则if statement
内部的代码将被编译。我很困惑为什么会这样!我知道R在内部将0识别为FALSE,并且if condition
内的语句未进行评估,这是有道理的,但是为什么要对其他数字进行评估?
if(5) {
5 * 5
}
我原本希望我会得到一个错误,但是代码可以编译,我得到25作为答案。
答案 0 :(得分:6)
在if
帮助页面上,if
期望:
长度为1的逻辑向量...如果可能,将其他类型强制为逻辑,而忽略任何类
所以基本上可以做到
as.logical(5)
# [1] TRUE
由于它是5 != 0
,所以是真的
as.logical(0)
# [1] FALSE
在语言中很常见,任何非0的数字都被解释为“真”