在R中评估为True / False的是什么?

时间:2011-04-15 18:58:50

标签: r boolean

例如,在Ruby中,只有nil和false是false。 R中的内容是什么?

例如:5==TRUE5==FALSE都评估为FALSE。但是,1==TRUETRUE。关于(对象,数字等)评估的内容是否有任何一般规则?

3 个答案:

答案 0 :(得分:49)

?logical记录了这一点。相关部分是:

Details:

     ‘TRUE’ and ‘FALSE’ are reserved words denoting logical constants
     in the R language, whereas ‘T’ and ‘F’ are global variables whose
     initial values set to these.  All four are ‘logical(1)’ vectors.

     Logical vectors are coerced to integer vectors in contexts where a
     numerical value is required, with ‘TRUE’ being mapped to ‘1L’,
     ‘FALSE’ to ‘0L’ and ‘NA’ to ‘NA_integer_’.

第二段解释了您所看到的行为,分别是5 == 1L5 == 0L,它们都应返回FALSE,其中1 == 1L和{{1} } 0 == 0L1 == TRUE分别为TRUE。我相信这些都没有测试你想让他们测试的东西;比较是基于R中0 == FALSETRUE的数字表示,即在强制转换为数字时采用的数值。

但是,只保证FALSE只有TRUE

TRUE

> isTRUE(TRUE) [1] TRUE > isTRUE(1) [1] FALSE > isTRUE(T) [1] TRUE > T <- 2 > isTRUE(T) [1] FALSE isTRUE的包装,我们注意到identical(x, TRUE)

?isTRUE

因此,同样的优点,只保证Details: .... ‘isTRUE(x)’ is an abbreviation of ‘identical(TRUE, x)’, and so is true if and only if ‘x’ is a length-one logical vector whose only element is ‘TRUE’ and which has no attributes (not even names). 完全等于FALSE

FALSE

如果这与您有关,请始终使用> identical(F, FALSE) [1] TRUE > identical(0, FALSE) [1] FALSE > F <- "hello" > identical(F, FALSE) [1] FALSE isTRUE()来检查与identical(x, FALSE)TRUE的等效性。 FALSE没有按照你的想法行事。

答案 1 :(得分:4)

TTRUE为True,FFALSE为False。但是,TF可以重新定义,因此您只能依赖TRUEFALSE。如果你将0与FALSE和1比较为TRUE,你会发现它们也是相同的,所以你可能会认为它们是真和假。

答案 2 :(得分:-2)

如果你考虑一下,将数字与逻辑语句进行比较并没有多大意义。但是,由于 0通常与“关闭”或“假”相关联, 1与“开启”或“真实”相关,因此R决定允许1 == TRUE0 == FALSE两者都是真的。除非它类似于3 - 2 == TRUE

,否则任何其他数字到布尔的比较都应该产生错误