El lenguaje de programación R ofrece diferentes funcionalidades a través de diferentes paquetes disponibles en repositorios en línea. El repositorio oficial CRAN sigue actualizando estos paquetes y publica con frecuencia nuevas versiones de paquetes.
El sistema de paquetes de R está configurado de forma predeterminada para sobrescribir las versiones existentes de los paquetes para que el usuario siempre tenga la última versión. Por lo tanto, cualquier actualización sobrescribirá la versión anterior. Entonces, si desea usar dos versiones del paquete, debe instalarlo en una ubicación diferente y debe importarlo en consecuencia especificando esa ubicación.
Sintaxis:
.libPaths()
Devuelve la ruta donde se miran los paquetes por defecto. La primera ruta es la biblioteca del usuario donde se instalan los paquetes que el usuario elige descargar. La segunda es la ruta de la biblioteca del sistema donde se instalan los paquetes predeterminados que vienen con R.
Para verificar los paquetes instalados, use este comando:
paquetes.instalados()
Devuelve información sobre todos los paquetes instalados como la versión, la ruta de instalación, las dependencias de la versión de R, otras importaciones que necesita el paquete.
Instalación de diferentes versiones del paquete
A veces puede haber cambios drásticos en la última versión del software que hacen que el usuario vuelva a las versiones anteriores. Algunas funciones pueden quedar obsoletas, las clases eliminadas, los parámetros de las funciones alterados, lo que puede ser problemático para los usuarios existentes que trabajan con versiones anteriores. Entonces, un usuario puede querer instalar una versión obsoleta para una función en particular y luego volver a una biblioteca existente.
Sintaxis:
remotes::install_version(paquete, versión= número de versión, lib =ubicación)
Esta función instala el paquete en la ubicación lib especificada por el usuario. Es posible que esta función no funcione debido a la falta de una string de herramientas adecuada para crear/compilar paquetes. De forma predeterminada, R para Windows instala los «paquetes binarios» precompilados de CRAN. CRAN archiva las fuentes del paquete y no los binarios que necesitamos instalar. Por lo tanto, se requiere Rtools para construir y compilar bibliotecas.
El paquete ‘versions’ en CRAN se basa en el servidor Revolution Analytics MRAN para instalar paquetes para versiones específicas sin la necesidad de instalar Rtools para instalar paquetes binarios, pero esto funcionará desde la fecha en que se lanzó MRAN, que es cerca del 2014-09-17 .
Sintaxis:
versiones::install.dates(paquetes, fechas, lib)
Descargue e instale las últimas versiones de los paquetes alojados en CRAN a partir de una fecha específica desde el servidor MRAN.
Ejemplo:
R
# install yesterday's version of dslabs versions::install.dates('dslabs', Sys.date() - 1)
Sintaxis:
versiones::install.versions(paquetes, versiones, lib)
Descargue e instale versiones con nombre de paquetes alojados en CRAN desde el servidor MRAN.
Ejemplo:
R
# install specific version of caret install.versions('caret', '6.0-77')
Si ya tiene una versión del paquete y desea instalar otra versión, debe cambiar la ruta del directorio donde R almacena las bibliotecas. R sobrescribirá la instalación anterior de la misma biblioteca incluso si la versión es diferente.
Cargando los paquetes en la sesión R
R busca la ruta de la biblioteca activa para encontrar la instalación del paquete solicitado. Como ambas versiones de un paquete se instalan en diferentes ubicaciones, la función de biblioteca aún puede cargar el paquete especificando la ubicación de ese paquete.
Sintaxis:
biblioteca(paquete, lib.loc= ubicación)
De forma predeterminada, lib.loc = NULL , lo que significa que R buscará paquetes en su ruta de biblioteca predeterminada.
El siguiente ejemplo ilustra cómo usar diferentes versiones de package.
Ejemplo:
R
# R program to illustrate working # with different versions of a package. library(versions) library(fs) # Create a new folder to install the # latest version of package. old_lib_loc <- .libPaths()[1] new_lib_loc <- path_home_r('R/new_lib/') # install the latest version in the # new location. versions::install.versions('caret', version = '6.0-86', lib = new_lib_loc) # load the library from the default # path(old_lib_loc) as lib is unspecified. library(caret) # Creating sample sets dat <- data.frame(x = rnorm(50)) class <- sample(c("Y", "N"), 50, TRUE) # Training a model to fit data fit <- train(dat, class, method = "glm") # Check the version of caret package in use packageVersion('caret') extractProb(list(fit)) # Displays error due to a internal bug # in that version of code. # Detach the current caret package detach("package:caret") #if(!require("caret")) #install.packages("caret") # loads the newer version of package # installed in new_lib library(caret, lib.loc = new_lib_loc) # check the version of caret package in use packageVersion('caret') # returns the training and test data prediction as # the bug is fixed in this version of package. extractProb(list(fit))
Producción:
[1] ‘6.0.86’ N Y obs pred model dataType object 1 0.6343887 0.3656113 N N glm Training Object1 2 0.6359912 0.3640088 N N glm Training Object1 . . 49 0.6805284 0.3194716 N N glm Training Object1 50 0.6582383 0.3417617 N N glm Training Object1 [1] ‘6.0.86’ N Y obs pred model dataType object 1 0.6343887 0.3656113 N N glm Training Object1 2 0.6359912 0.3640088 N N glm Training Object1 . . 49 0.6805284 0.3194716 N N glm Training Object1 50 0.6582383 0.3417617 N N glm Training Object1
Trabajando con packrat o renv
Cualquier instalación, actualización o cambio en una sesión de R genera un cambio en el directorio de R que se comparte entre todas las sesiones de R. Diferentes proyectos pueden necesitar diferentes paquetes y, por lo tanto, puede haber muchas dependencias de paquetes diferentes. Por lo tanto, podríamos cambiar algunas funcionalidades que se comparten en el entorno global, lo que afectaría a todas las demás sesiones. Entonces, necesitamos un ‘ Entorno virtual ‘ como Python para administrar estas dependencias conflictivas. De ahí nace la idea de las bibliotecas locales de proyecto.
‘ Packrat ‘ y ‘ renv ‘ son paquetes disponibles en R para estos fines. renv es el sucesor de packrat. Estos paquetes ayudan a aislar diferentes proyectos, de modo que un proyecto no afecte a otro al proporcionar a cada proyecto su propia biblioteca de paquetes privada, haciendo que los proyectos sean portátiles para que sea fácil instalar paquetes de los que depende su proyecto y reproducir las versiones exactas del paquete a necesidades del proyecto.
Renv es un conjunto de herramientas de administración de dependencias para R. Con ‘renv’, puede crear y administrar bibliotecas R locales del proyecto, guardar el estado de estas bibliotecas y luego restaurar su biblioteca según sea necesario. Juntas, estas herramientas pueden ayudar a que sus proyectos sean más aislados, portátiles y reproducibles.
Si ha comenzado a hacer algún proyecto, antes de trabajar realmente en un proyecto, debe resolver los problemas de control de versiones; encontrar las versiones correctas de los paquetes para usar o tener que lidiar con las dependencias. Renv proporciona una forma más limpia y sencilla de hacer esto. Renv resuelve la administración de paquetes pero no se ocupa de las diferentes versiones de R. El flujo de trabajo para usar renv:
- Cuando haya desarrollado su proyecto hasta cierto punto, y piense que usted u otra persona podría tener que volver a él en el futuro, al ejecutar renv::init() puede inicializar renv.
Sintaxis: renv::init(proyecto = NULL, perfil = NULL, configuración = NULL, desnudo = FALSO, fuerza = FALSO, reinicio = interactivo())
Parámetro:
- proyecto: El directorio del proyecto.
- perfil: El perfil a activar por ejemplo ‘desarrollo’ o ‘producción’. Cuando es NULL, en su lugar se activa el perfil predeterminado.
- ajustes: una lista de ajustes que se utilizarán con el proyecto recién inicializado.
- desnudo (booleano): si es verdadero, inicializa el proyecto sin intentar descubrir e instalar las dependencias del paquete R.
- force (booleano): de forma predeterminada, renv se negará a inicializar el directorio de inicio como un proyecto.
- reiniciar (booleano): ¿intentar reiniciar la sesión de R después de inicializar el proyecto? Se intentará reiniciar la sesión si la opción «reiniciar» R está configurada por el frontend que incrusta R.
Descubre los paquetes utilizados en el proyecto actual y luego inicializa una biblioteca R privada local del proyecto con esos paquetes. Las versiones actualmente instaladas de cualquier paquete en uso (según lo detectado dentro de las bibliotecas R predeterminadas) se instalan luego en la biblioteca privada del proyecto.
Para iniciar un nuevo proyecto e inicializar renv en él, use el argumento del proyecto para especificar la ubicación del directorio del proyecto.
Esto configurará un entorno local del proyecto con una biblioteca privada y también se asegurará de instalar todos los paquetes que está utilizando en esa biblioteca. Obtendrá todos sus paquetes y dependencias de versión descubiertas y almacenadas en un archivo llamado renv.lock . Renv también escribirá en archivos en el directorio del proyecto activo, incluido el archivo de bloqueo y la carpeta ‘renv’ en el directorio del proyecto que contiene bibliotecas privadas y scripts de activación para cargar el proyecto.
Correr . libPaths() para verificar las rutas de la biblioteca para el proyecto con renv inicializado en él.
- Para guardar el estado de la biblioteca de su proyecto en renv.lock, llame a renv::snapshot() o llame a renv::restore() para volver al estado anterior codificado en el archivo de bloqueo.
- Al ejecutar renv::restore() , podrá reinstalar todas las dependencias de renv.lock para asegurarse de haber configurado su proyecto lo más cerca posible de donde lo dejó, y reducir enormemente las posibilidades de encontrar problemas asociados. con versiones de paquete.
Ejemplo:
R
# R program with renv initialized # in project directory. # install digest # Installs the package into a private # library. renv::install("digest") # save library state to lockfile # Updates a lockfile capturing the state # of a project's R package dependencies. # The lockfile can be used to later restore # these project's dependencies as required. renv::snapshot() # remove digest from library renv::remove("digest") # check library status # Reports the differences between the # project's lockfile and the current state # of the project's library (if any) renv::status() # restore lockfile, thereby reinstalling digest # Restore a project's dependencies from a lockfile, # as previously generated by snapshot(). renv::restore()
El siguiente programa demuestra cómo configurar los ajustes de renv, como habilitar o deshabilitar las instantáneas automáticas mientras se trabaja en el directorio del proyecto.
Ejemplo:
R
# R program to change renv settings. # disable automatic snapshots auto.snapshot <- getOption("renv.config.auto.snapshot") options(renv.config.auto.snapshot = FALSE) # restore automatic snapshots options(renv.config.auto.snapshot = auto.snapshot)
Publicación traducida automáticamente
Artículo escrito por shantanu13srg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA