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
- 0 comentarios
- Categorías:
- Básico
- Programación
- R para biólogos
← Publicación más antigua Publicación más reciente →