CAPÍTULO 5. ESCRITURA DE FUNCIONES
97
la lista
search()
; esto es, en el ambiente
“.GlobalEnv”
. En el ejemplo ante-
rior, se ve que el objeto recién creado asociado al símbolo
MiSimbolo
, aparece
justamente en la lista correspondiente a ese ambiente.
Cuando R busca el valor asociado a un símbolo, lo hace justamente en el
orden establecido por la lista entregada por la función
search()
. Esa es la razón
por la cual al redefinir la función
t()
, el intérprete se encontró primero con la
nueva definición provista y no con la que existía previamente en el ambiente
“package:base”
, que, como se puede ver, es el último de la lista. De hecho, el
primer ambiente siempre será el ambiente global
“.GlobalEnv”
, y el último el
correspondiente a
“package:base”
.
Cada vez que se carga un nuevo paquete, mediante la función
library()
,
por ejemplo, su ambiente se introduce en la segunda posición de la lista, empu-
jando todos los que ya estaban, una posición
hacia abajo
, pero dejando siempre
en primer lugar el ambiente global. Por ejemplo, si se carga el paquete para
desarrollo de interfaces gráficas
tcltk
, obtenemos lo siguiente:
library
(tcltk)
search
()
## [1] ".GlobalEnv"
"package:tcltk"
## [3] "package:knitr"
"package:stats"
## [5] "package:graphics" "package:grDevices"
## [7] "package:utils"
"package:datasets"
## [9] "Autoloads"
"package:base"
Otro hecho interesante es que R mantiene por separado los espacios de
nombres de las funciones y de todos los otros objetos que no son funciones.
De este modo, se pudiera definir un símbolo
“t”
, asociado a un vector, por
ejemplo, y aún así tener acceso a la función
t()
, veamos:
t
<-
c
(
1
,
2
,
3
)
# definimos vector
t
(mx)
# usamos la funcion t
##
[,1] [,2]
## [1,] 4 5
## [2,] 6 7
t
# pero al consultar t, tenemos ...
## [1] 1 2 3
Aunque en el ambiente global sólo existe el símbolo
“t”
correspondiente al
vector, no obstante, R acertadamente invoca la función de transposición
t()
,
por la separación de espacios de nombres entre funciones y no funciones.