【发布时间】:2016-12-04 07:37:51
【问题描述】:
所以,我发现了这个:
> TRUE == "TRUE"
[1] TRUE
> TRUE == "BOO"
[1] FALSE
> TRUE == "true"
[1] FALSE
> TRUE == "T"
[1] FALSE
> FALSE == "FALSE"
[1] TRUE
> FALSE == "F"
[1] FALSE
根据logical {base} 的 R 文档:
as.logical 尝试将其参数强制为逻辑类型。 字符串 c("T", "TRUE", "True", "true") 被认为是真, c("F", "FALSE", "False", "false") 为 false,其他为 NA。
其实是这样的:
> as.logical("T")
[1] TRUE
显然,TRUE == "T" 发生的事情不是as.logical 类型的转换。这些 == 比较的行为有什么合理的解释吗?
【问题讨论】:
-
TRUE == T #[1] TRUE"T"可以是任何东西。顺便说一句,最好用 TRUE 而不是缩写的 T,因为它会导致一些问题 -
在这里发表评论,所以它也发给@akrun ..他可能能够提供更好的帮助。这是我绑定的东西,但无法解释输出:
trace ("=="); "TRUE"==T> 虽然我对文档的解释似乎是正确的,但进一步的了解会有所帮助。 -
可能跑题了,但有函数
isTRUE可用于答案必须为 TRUE 且仅当它与 TRUE 相同的情况下,否则会导致 FALSE(甚至TRUE) 的向量。