如果我检查sqrt函数的环境,我得到NULL:
> environment(sqrt)
NULL
Run Code Online (Sandbox Code Playgroud)
另一方面,split在基础包中也可以找到的功能具有以下环境:
> environment(split)
<environment: namespace:base>
Run Code Online (Sandbox Code Playgroud)
为什么这两个函数有不同的环境,NULL环境是什么意思?
sqrt是一个原始函数,没有R代码.Per Hadley Wickham的高级R页面:
原始功能
规则有一个例外,即函数有三个组件.原始函数,如
sum()直接调用C代码.Primitive()并且不包含R代码.因此他们的formals(),body()和environment()都是NULL.