我猜想这是从C继承的,例如从这里继承的:
在C中,true用不等于0的任何数值表示,false用0表示。
还可以参见例如这里;目前我无法找到更好的官方语言规范源代码。
一份盗版的克尼汉和里奇2d。我在网上发现(我不想链接到它),在第50页第3.2节,“If-否则”(着重号是补充的):
如果表达式为true (,即,如果表达式具有非零值),则执行语句1。如果它是false (表达式为零),并且如果有其他部分,则将执行语句2。
@hrbrmstr指出,用于转换的逻辑的R内部定义在Rinternals.h:中
#define LOGICAL(x) ((int *) DATAPTR(x))