首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >as.logical双重胁迫的理由是什么?

as.logical双重胁迫的理由是什么?
EN

Stack Overflow用户
提问于 2015-09-20 23:52:06
回答 1查看 170关注 0票数 10

我试图理解双打的强制理由:

代码语言:javascript
复制
as.logical(c(-1, -0.01, 0, 0.01, 0.1,1:10))
#>  [1]  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
#> [12]  TRUE  TRUE  TRUE  TRUE

我可以看到强制发生在标量上(符号并不重要),而且只有0才被胁迫到FALSE。我对此感到惊讶,似乎没有“最接近.”的概念。或四舍五入到0L或1L。我很好奇为什么。

我确实试着四处寻找洞察力,这里,但没有成功。

我还看了这个相关的问题

有人能解释为什么我会期望上面测试的每一个值都像他们一样强制执行吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-21 00:05:17

我猜想这是从C继承的,例如从这里继承的:

在C中,true用不等于0的任何数值表示,false用0表示。

还可以参见例如这里;目前我无法找到更好的官方语言规范源代码。

一份盗版的克尼汉和里奇2d。我在网上发现(我不想链接到它),在第50页第3.2节,“If-否则”(着重号是补充的):

如果表达式为true (,即,如果表达式具有非零值),则执行语句1。如果它是false (表达式为零),并且如果有其他部分,则将执行语句2。

@hrbrmstr指出,用于转换的逻辑的R内部定义在Rinternals.h:

代码语言:javascript
复制
#define LOGICAL(x) ((int *) DATAPTR(x))
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32685514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档