if
的文档说,条件应该是(强调我的):
不是NA的长度为1的逻辑向量。长度条件 大于一个的警告目前已被接受,但只有 使用第一个元素。相反,当 环境变量_R_CHECK_LENGTH_1_CONDITION_设置为true。 如果可能的话,其他类型将被强制转换为逻辑类型,而忽略任何类。
胁迫是如何完成的?“忽略任何班级”是什么意思?
例如,表达式list(1)
可以用TRUE
显式强制为as.logical
,并在等式比较中隐式地认为TRUE
:
> as.logical(list(1))
[1] TRUE
> list(1) == TRUE
[1] TRUE
为什么,以下操作失败?
> if (list(1)) print("Passed test!")
Error in if (list(1)) print("Passed test!") :
argument is not interpretable as logical