Introducción a “entornos” en R (aka diccionarios)

R ofrece multitud de estructuras de datos para trabajar, como pueden ser vectores, matrices n-dimensionales o dataframes. Según vamos creando programas más complejos es posible que nos veamos en la necesidad de guardar un conjunto de variables en algún sitio, lo cual resolveríamos con un diccionario en otro lenguaje (un HashMap en Java o un dict en python). En R disponemos de una clase que nos ofrece esa funcionalidad, y es lo que se conoce como “environment” o entorno. Dicho de forma sencilla, un environment en R sería el equivalente a un vector en el cual accedemos a sus elementos a través de una serie de etiquetas que les asignamos, lo cual nos suele dar una pista de lo que contiene si no somos excesivamente crípticos eligiendo las claves.

Nada más arrancar R existe un entorno por defecto que es el entorno global en el que se guardan todas las variables con las que trabajamos. Es por ello que las funciones para listar las variables, borrarlas o comprobar si existen son las mismas que las que vamos a ver para los entornos. Además, cuando creamos un nuevo entorno, este se va a guardar en el entorno global, de forma anidada. Si Por algún casual necesitamos acceder a ese entorno global podemos utilizar environment(), e incluso anidarlo en otro entorno de forma.

A continuación tenéis una breve introducción al manejo de entornos en R.

Para crear un nuevo environment en el que guardar nuestras variables hacemos:

> mi_entorno = new.env()

Ahora tenemos un entorno vacío así que vamos a añadir un elemento. Para ello utilizamos la función “assign” a la cual le pasamos el nombre de la variable, el valor asociado a la misma y finalmente el entorno en el que queremos almacenarla.

> assign( "una_variable", 2, envir = mi_entorno )

Si no le pasamos el parámetro “envir”, esta variable se guardará en el entorno global. Esto mismo va a ocurrir con el resto de funciones que veamos. Personalmente, me gusta más la sintaxis con corchetes, más cercana a otros lenguajes en los que trabajo y más práctica:

> mi_entorno[[ "otra_variable" ]] = "hola radiola"

Podemos guardar lo que queramos dentro de un entorno, incluso anidar entornos:

> mi_entorno[["vector_de_resultados"]] = c(result_1, result_2, …)
> mi_entorno[["sub_entorno"]] = otro_entorno

Si queremos recuperar un valor utilizamos la función “get” o también podemos usar la sintaxis corta:

> get( "una_variable", envir = mi_entorno )
[1] 2
> mi_entorno[[ "una_variable" ]]
[1] 2

Para eliminar una entrada del entorno:

> rm( "clave", envir = mi_entorno )

 

Podemos obtener una lista de las entradas que almacena un entorno:

> ls(mi_entorno)
[1] "una_variable" "otra_variable"

Y también es posible comprobar si una clave está en el entorno:

> exists( "clave", envir = mi_entorno )
[1] TRUE

 

Un comentario en “Introducción a “entornos” en R (aka diccionarios)

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s