我在这里遇到了一个奇怪的问题:
https://stackoverflow.com/a/11084038/636656
似乎分配给与基本函数相同的名称仍然允许您使用基本函数:
> print <- FALSE
> print
[1] FALSE
> print("hi")
[1] "hi"
>
> sum <- FALSE
> sum(1:10)
[1] 55
> sum
[1] FALSE
相比之下,将函数分配给与基函数相同的名称不会产生相同的行为:
> sum <- function(x) x^2
> sum(1:10)
[1] 1 4 9 16 25 36 49 64 81 100
> sum
function(x) x^2
我知道这些位于不同的名称空间中,但我对两件事感到好奇:
为什么:这是避免难以恢复的行为(例如,如果您覆盖
rm
)的故障保险吗?预测这种行为的原理是什么?如何:按命名空间是否有不同的函数和逻辑查找例程?