T & F 在 R 中如何作为 TRUE & FALSE 的缩写?

zha*_*usi 5 specifications r

T 和 F 不是 R 中的保留关键字,而 TRUE 和 FALSE 是。然而,T和F仍然可以在很多地方用作TRUE和FALSE的缩写。

我在 R 语言规范中找不到任何对此的引用;也许我错过了一些东西:

https://cran.r-project.org/doc/manuals/R-lang.pdf

我知道如果 T 或 F 被覆盖,使用缩写可能会导致一些致命的错误结果:

T <- FALSE
print(T)
print(F)
Run Code Online (Sandbox Code Playgroud)

所以我想知道什么机制允许使用 T 和 F 作为缩写?为什么这首先被允许?

编辑的额外说明:

写完这个问题后,我立即继续使用 R 进行工作,发现使用缩写而不是完整的布尔值 TRUE & FALSE 是多么危险。因为我已经在我的 RStudio 控制台中测试了上面的代码,所以在我的环境中 T 被覆盖为 FALSE;当我开始运行一些脚本时,一切都开始出错,因为直到今天我一直使用缩写,当然 T 现在表现得为 FALSE。

我花了 5 分钟才弄清楚出了什么问题,但如果我还没有意识到这个问题并且最近没有想到这个问题,可能会花费更长的时间。

所以不要使用缩写!:)

Jam*_*mes 5

它们是base命名空间中的对象。

find("T")
[1] "package:base"
find("F")
[1] "package:base"
Run Code Online (Sandbox Code Playgroud)

从技术上讲,您不会覆盖它们,而是在掩盖这些的搜索路径中具有更高优先级的环境中创建对象(很可能是全局环境),但您仍然可以直接访问它们。

T <- FALSE
T
[1] FALSE
base::T
[1] TRUE
Run Code Online (Sandbox Code Playgroud)