> langage et graphiques > Les bases > Environnements
Environnements
Un environnement est une liste d'objets nommés et un pointeur vers l'environnement parent. Quand une fonction est appelée, les variables définies dans la fonction sont locales : un nouvel environnement est créé dans lequel sont stockées les variables locales.
Attention : cette rubrique est déconseillée aux débutants sous R.
Environnement local :
- environment() : renvoie l'environnement local courant (à l'endroit de l'appel).
- ls(environment()) : renvoie les objets définis dans l'environnement local courant.
Pour comprendre ce qu'est un environnement :
f <- function() {
a <- 1
ls(environment())
}
ls(environment())
f()
donne
[1] "f"
[1] "a"
- à l'appel de ls(environment()) hors de la fonction, il n'y a que "f" qui soit définie à cet endroit (la variable "a" est locale à la fonction)
- quand on appelle f, à l'intérieur de f, il n'y a que "a" qui soit défini.
Environnement global : c'est l'environnement en dehors de toutes les fonctions du programme :
- Il s'appelle .GlobalEnv et contient tous les objets définis par l'utilisateur (pas ceux pré-définis).
- On peut aussi y accéder par globalenv().
- donc, pour voir les objets définis en dehors des fonctions, il faut faire : ls(globalenv()
Environnement de base : c'est l'environnement du package de base :
- on peut y accéder avec baseenv().
- ls(baseenv()) : retourne la liste des objets pré-définis dans le package de base.
emptyenv() : c'est l'environnement vide.
Environnement parent :
- parent.env(myEnv) : retourne l'environnement parent de l'environnement myEnv.
- l'environnement parent de baseenv() est emptyenv()
- parent.env(environment()) dans une fonction déinie directement dans le programme (pas déinie elle-même dans une autre fonction) donne l'environnement global.
Test de l'existence d'un objet dans un environnement :
- exists("a", environment()) : teste si l'objet "a" existe dans l'environnment donné (ici, l'environnement courant) et tous les environnements le contenant (récursif).
- exists("a", environment(), inherits = FALSE) : se limite à l'environnement indiqué, sans aller voir les environnements le contenant.
Copyright Aymeric Duclert
programmer en R, tutoriel R, graphes en R