2015-07-20 12 views
8

Se controllo dell'ambiente della funzione sqrt, ottengo NULL:Qual è l'ambiente NULL?

> environment(sqrt) 
NULL 

D'altra parte, la funzione split che si trova anche nel pacchetto di base ha l'ambiente:

> environment(split) 
<environment: namespace:base> 

Perché queste due funzioni hanno ambienti diversi e cosa significa l'ambiente NULL?

risposta

9

sqrt è una funzione primitiva e non ha codice R. Per Hadley Wickham's advanced R pagina:

funzioni primitive

C'è una sola eccezione alla regola che le funzioni hanno tre componenti. Le funzioni primitive, come sum(), chiamano il codice C direttamente con .Primitive( e non contengono codice R. Pertanto loro formals(), body() e environment() sono tutti NULL.