class: center, middle, inverse, title-slide # Mantenimiento del espacio de trabajo en R ### Joselyn Chávez
11 de agosto de 2021 --- class: middle, center ## Este material posee una licencia tipo Creative Commons Attribution-ShareAlike 4.0 International License. ## Para conocer más sobre esta licencia, visite http://creativecommons.org/licenses/by-sa/4.0/ --- class: middle, center ## Material disponible en: ### https://comunidadbioinfo.github.io/cdsb2021_workflows ## Basado en el RStudioConf2020 workshop <br> What They Forgot, disponible en: ### https://rstd.io/wtf-2020-rsc --- # Exploremos tu instalación de R Los paquetes en R son la unidad natural para distribuir código. R base contiene ~14 paquetes de base y 15 paquetes recomendados. **CRAN** contiene ~ 18K paquetes que puedes instalar con ```r install.packages(“nombre_del_paquete”) ``` **Bioconductor** contiene >2K paquetes de software, ~1000 paquetes de anotación, 400 de datos experimentales y 30 de flujos de trabajo. Para instalar paquetes desde Bioconductor necesitamos el paquete BiocManager: ```r BiocManager::install("Biostrings") ``` --- # ¿En dónde se instalan las paqueterías? <br> Por defecto toda instalación de R se genera dentro de un directorio que R asigna de forma automática. ```r .Library ``` Adicionalmente, existe una ruta donde R busca la disponibilidad de paqueterías instaladas. ```r .libPaths() ``` Nota que esta ruta contiene la versión de R que tienes instalada, por ejemplo 4.1 ??? Notarás que al instalar un paquete siempre aparece un mensaje mencionando la ruta donde el paquete será instalado. --- # ¿Cómo sabemos qué paquetes tenemos instalados? Si estás en RStudio puedes ir a la ventana **Packages** o usar el comando ```r installed.packages() ``` Este comando muestra las propiedades del paquete: - La ruta donde se encuentra instalado. - La versión del paquete. - Dependencias. - La versión de R en que fue construida. - Entre otras... --- class: chapter-slide # Es tu turno! Realiza la Actividad 1<br>5 min --- # ¿Cómo mantenemos actualizados nuestros paquetes? .pull-left[ ## Desde CRAN Si te encuentras en RStudio, puedes ir a la ventana .center[Packages > Update ] Selecciona los paquetes que deseas actualizar. ] .pull-right[ <img src="data:image/png;base64,#img/update.png" width="100%" style="display: block; margin: auto;" /> ] ??? Continuamente los paquetes tienen actualizaciones mejorando el código, agregando funciones o solucionando problemas de código. --- ## Desde CRAN Si te encuentras trabajando en la consola y deseas obtener una lista de los paquetes que tienen una actualización disponible puedes usar el comando ```r old.packages() ``` Para actualizar un paquete en específico puedes instalar nuevamente el paquete con ```r install.packages("pkgname") ``` O usar el paquete devtools ```r devtools::update_packages("pkgname") ``` --- ## Desde CRAN ### Puedes actualizar todos los paquetes a la vez Las instrucciones anteriores se suelen usar para actualizar uno o algunos paquetes, pero si deseas actualizar todos los paquetes a la vez puedes usar el comando ```r devtools::update_packages(TRUE) ``` --- ## Desde Bioconductor Puedes conocer cuáles paquetes tienen una actualización disponible en Bioconductor con ```r BiocManager::valid() ``` Este comando proporciona el comando necesario para instalar los paquetes. Puededs reinstalar el paquete con ```r BiocManager::install("pkgname") ``` O puedes instalar todos los paquetes a la vez ```r BiocManager::install() ``` --- class: chapter-slide # Es tu turno! Realiza la Actividad 2<br>10 min --- # Instalando una versión anterior de un paquete .pull-left[ Para las paqueterías de CRAN: - Dirígete a la página del paquete. - Entra a la sección ‘Old sources’. - Selecciona la versión que deseas instalar. Después usa devtools para instalar esa versión en específico ```r devtools::install_version("devtools", "1.13.6") ``` ] .pull-right[ <img src="data:image/png;base64,#img/old.png" width="100%" style="display: block; margin: auto;" /> ] ??? En algunos casos necesitaremos instalar una versión anterior de algún paquete, por ejemplo para reproducir un análisis que se realizó hace tiempo o solucionar un problema de código. Primero debes conocer el número de versiones anteriores del paquete. Para las paqueterías de CRAN, dirígete a la página del paquete, entra a la sección ‘Old sources’ y selecciona la versión que deseas instalar. --- # Instalando una versión anterior de un paquete ### Ejemplo Revisa la versión que tienes instalada actualmente ```r packageVersion("devtools") ``` Instala la versión anterior que desees ```r devtools::install_version("devtools", "2.0.0") ``` Verifica la versión ahora ```r packageVersion("devtools") ``` --- class: chapter-slide # Es tu turno! Realiza la Actividad 3<br>10 min --- # Mantenimiento de paqueterías entre versiones de R Al realizar actualizaciones importantes, podemos perder la instalación de paqueterías. <img src="data:image/png;base64,#img/minors.png" width="40%" style="display: block; margin: auto;" /> ??? Cuando instalamos una actualización menor de R (por ejemplo si tenemos instalada la versión 3.5.0 y actualizamos a la versión 3.5.1) la instalación de nuestras paqueterías se conserva en el mismo directorio y no es necesario volver a instalarlas. Por el contrario, cuando realizamos actualizaciones grandes de R (por ejemplo de 3.5.3 a 3.6.0 o de 3.6.1 a 4.0.0) la ruta de instalación de nuestras paqueterías cambiará y por ello es posible que necesitemos instalarlas nuevamente. Si sueles instalar un gran número de paqueterías pero no las usas frecuentemente, este cambio de ruta de instalación puede servir para reconsiderar cuáles paqueterías relamente necesitas volver a instalar. Sin embargo, si tienes un gran número de paqueterías que deseas conservar entre actualizaciones de R, existe una solución. --- ## ¿Cómo conservamos los paquetes instalados? Indicando la ruta en R_LIBS_USER dentro del archivo .Renviron. Antes de modificar esta variable, veamos cómo se encuentra tu configuración actual. Ejecuta el siguiente comando para ver la ruta que por defecto R selecciona para instalar las paqueterías: ```r Sys.getenv("R_LIBS_USER") ``` ``` ## [1] "~/Library/R/x86_64/4.1/library" ``` Si te encuentras trabajando en un sistema operativo OS/Mac, tu ruta se verá similar a R_LIBS_USER=~/Library/R/%v/library. Si te encuentras trabajando en Windows es muy probable que tu ruta se vea así: R_LIBS_USER=~/R/win-library/x.y ??? Una modificación interesante que podemos hacer dentro de .Renviron es seleccionar la ubicación donde serán instaladas las paqueterías de R usando la variable R_LIBS_USER. Antes de modificar esta variable, veamos cómo se encuentra tu configuración actual. Ejecuta el siguiente comando para ver la ruta que por defecto R selecciona para instalar las paqueterías: Nota que la ruta menciona la versión de R que tienes instalada, en mi caso es la versión 4.1. Mantener esto en mente es importante porque cuando hagamos una actualización en el futuro, por ejemplo a R 4.2, esta ruta va cambiar. --- ## ¿Cómo conservamos los paquetes instalados? Necesitaremos crear un directorio para instalar los paquetes de la versión futura de R. - Crea un directorio con el número de versión que instalarás, usando el comando: ```r fs::dir_create("~/Library/R/4.2/library") ``` - Abre tu archivo .Renviron. - Agrega la variable R_LIBS_USER y la ruta al directorio que acabas de crear. Usa R_LIBS_USER=~/Library/R/4.2/library para Mac o R_LIBS_USER=~/R/win-library/4.2 para Windows. - Guarda los cambios y reinicia la sesión. --- ## ¿Cómo conservamos los paquetes instalados? Ahora podemos instalar paquetes en este directorio. - Instala el paquete dplyr usando el comando ```r install.packages("dplyr") ``` - Nota que en el mensaje de instalación se menciona la ruta donde está realizando la instalación. - Verifica que dplyr se instaló en el nuevo directorio ```r installed.packages("mi-nuevo-directorio") %>% as_tibble() %>% View() ``` --- ## ¿Cómo conservamos los paquetes instalados? Es recomendable guardar la lista de paquetes en una variable antes de cambiar de directorio de instalación. - Reestablece el directorio de instalación que modificaste en el .Renviron. - Genera la lista de paquetes instalados y guárdala en una variable ```r pkgs <- installed.packages() %>% as_tibble() ``` - Dale un vistazo al contenido de esta variable. - Modifica el directorio de instalación en .Renviron. - Instala los paquetes enlistados en pkgs. ```r install.packages(pkgs$Package) ``` ??? Ahora puedes transferir todos los paquetes de tu versión actual y preparar el directorio que usará tu próxima versión de R. --- ## ¿Cómo conservamos los paquetes instalados? Puedes usar el argumento lib para evitar modificar el archivo .Renviron. ```r install.packages(pkgs$Package, lib = "~/Library/R/4.2/library") ``` También puedes seleccionar algunos paquetes de la lista ```r pkgs$Package[445] ``` ``` ## [1] "xaringan" ``` ```r install.packages(pkgs$Package[445], lib = "~/Library/R/4.2/library") ``` - Finalmente, revisa si los paquetes que instalaste se encuentran en la nueva ubicación. ```r installed.packages("~/Library/R/4.2/library") %>% as_tibble() %>% View() ``` --- class: chapter-slide # Es tu turno! Realiza la Actividad 4<br>5 min --- class: middle, center Si deseas conocer más detalles sobre mantenimiento de nuestro ambiente de R consulta el link en inglés: https://rstats.wtf/maintaining-r.html