私はここで奇妙なことに遭遇しました:
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
これらが異なる名前空間にあることは知っていますが、次の2つのことに興味があります。
理由:これは、回復が困難な動作(上書きした場合など
rm
)を回避するためのフェイルセーフですか?この振る舞いを予測する原理は何ですか?方法:名前空間ごとに関数と論理のルックアップルーチンは異なりますか?