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