attach() y detach() en R


Rosa Molina

Vamos a aprender a usar las funciones attach() y detach().

Se tratan principalmente de un buen truco para ahorrarnos palabras a la hora de programar, pero podemos tener problemas si las usamos sin cuidado. Vamos allá.


ADVERTISEMENT



La función attach() nos permite acceder fácilmente a las "columnas" de un data frame. De modo que, en vez de escribir data.frame$columna, podemos usar simplemente el nombre de la columna. Empecemos con el ejemplo:

#Vamos a crear un data frame con columnas llamadas: a1, b1 y c1
ejemplo <- data.frame(a1 = c(1,2,3),
                      b1 = c(4,5,6),
                      c1 = c(7,8,9))

#Si queremos acceder y graficar "a1", lo siguiente no funcionará
a1
plot(a1, b1)
Error: object 'a1' not found

Lo correcto sería escribir ejemplo$a1, ya que queremos la columna llamada a1 del data frame llamado ejemplo:

#Si queremos acceder y graficar "a1":
ejemplo$a1
plot(ejemplo$a1, ejemplo$b1)
[1] 1 2 3

Si no estás usando constantemente las columnas de tu data frame, seguramente no tendrás problemas con escribir esta sintaxis. Sin embargo, puede volverse tedioso tener que escribirlo de esta forma una y otra vez.

Aquí es donde entra la función attach(). Vamos a "adjuntar" nuestro data frame ejemplo a la ruta de búsqueda de R.

attach(ejemplo)
a1
plot(a1, b1)
[1] 1 2 3

Ahora tenemos acceso al contenido de la columna sin tener que referirnos al data frame. Esto es ya que, al "adjuntar" el data frame, ahora R puede encontrar los nombres de las columnas por sí solos.

Cabe mencionar que, después de usar attach(), puedes seguir usando la forma común para acceder a tus columnas sin ningún problema.

ejemplo$a1
[1] 1 2 3

Importante
Cuando hayamos terminado de usar nuestras columnas, lo mejor es revertir nuestro attach(). Es una buena práctica para evitar problemas.

#La función opuesta al attach() es detach()
detach(ejemplo)
a1
Error: object 'a1' not found

¿Por qué es importante usar detach()? Porque puede haber confusión si, en tu espacio de trabajo, hay una variable que tiene el mismo nombre que una columna de un data frame que fue adjuntado.

Eso sonó complicado. Veamos el ejemplo:

#Vamos a adjuntar de nuevo nuestra data frame
attach(ejemplo)

#¿Qué pasa si definimos una variable llamada a1?
a1 <- c(12,11,10)
a1
[1] 12 11 10

Como podemos ver, llamar a a1 nos devuelve los valores de la variable, NO los de la columna del data frame.

Esto puede llevarnos a errores. Por ejemplo, si queremos graficar las columnas a1 y b1, no obtendremos lo que esperamos; y si no somos cuidadosos, podríamos NO darnos cuenta del error.

plot(a1, b1)

Al remover la variable del espacio de trabajo, llamar a1 vuelve a devolver la columna del data frame.

#rm() para remover variables
rm(a1)

a1
[1] 1 2 3

Comentarios finales

Esta técnica es muy útil pero siempre hay que poner mucha atención cuando tengamos muchas variables o adjuntemos muchas data frames.

Si te gusta el blog, nos ayudarías mucho si lo compartes con alguien a quien le gustaría aprender R.

Eso es todo, ¡gracias por leer!


Esta publicación fue hecha usando R versión 3.6.3 (2020-02-29).

ADVERTISEMENT



← Publicación más antigua Publicación más reciente →


Acerca del autor


Foto del autor

Rosa Molina

Rosa es nuestra bióloga experta en R. Le gusta la observación de aves y tocar el piano de vez en cuando.




0 comentarios

Dejar un comentario

Por seguridad, los comentarios deben ser aprobados antes de ser publicados