Com emprar "renv" i no morir en l'intent

Trobada analistes de dades de la Gencat a l'ACA (C/ Provença 260, BCN). Dll. 16/01/2023, 15:30-17:00h.

Dr. Xavier de Pedro Puente - Ecòleg, TS TIC a l'IMI, AjBCN - xavier.depedro@seeds4c.org

Trobada analistes de dades

La idea és desvirtualitzar-nos, conèixer-nos, compartir informació... i després qui vulgui ens podem allargar i anar a prendre quelcom.
Accés obert a partir de les 15h15. Entrant per la porta del carrer (Provença 260), just la primera sala a l’esquerra.

PROGRAMA

  • 5’ Benvinguda
  • 20’ presentacions d’ús R general
  • 10’ Presentació dades
  • 30’ 6 presentacions de casos pràctics
  • 10’ tRivial
  • 10’ conclusió i torn obert



1. Control de versions amb "entorns" de treball


Image

2. Entorns virtuals en R amb renv

Image

3. De utils: : sessionInfo() al renv: : snapshot() + renv.lock

utils::sessionInfo()
> sessionInfo() R version 4.1.2 (2021-11-01) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Ubuntu 22.04.1 LTS Matrix products: default BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0 LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0 locale: [1] LC_CTYPE=ca_ES.UTF-8 LC_NUMERIC=C LC_TIME=ca_ES.UTF-8 [4] LC_COLLATE=ca_ES.UTF-8 LC_MONETARY=ca_ES.UTF-8 LC_MESSAGES=ca_ES.UTF-8 [7] LC_PAPER=ca_ES.UTF-8 LC_NAME=C LC_ADDRESS=C [10] LC_TELEPHONE=C LC_MEASUREMENT=ca_ES.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices datasets utils methods base other attached packages: [1] kableExtra_1.3.4 fs_1.5.2 tictoc_1.1 lubridate_1.9.0 timechange_0.1.1 [6] janitor_2.1.0 knitr_1.40 markdown_1.3 RODBC_1.3-19 fst_0.9.8 [11] forcats_0.5.2 stringr_1.4.1 dplyr_1.0.10 purrr_0.3.5 readr_2.1.3 [16] tidyr_1.2.1 tibble_3.1.8 ggplot2_3.4.0 tidyverse_1.3.1 loaded via a namespace (and not attached): [1] httr_1.4.4 jsonlite_1.8.3 viridisLite_0.4.1 modelr_0.1.10 assertthat_0.2.1 [6] renv_0.16.0 cellranger_1.1.0 yaml_2.3.6 pillar_1.8.1 backports_1.4.1 [11] glue_1.6.2 digest_0.6.30 rvest_1.0.3 snakecase_0.11.0 colorspace_2.0-3 [16] htmltools_0.5.3 pkgconfig_2.0.3 broom_1.0.1 haven_2.5.1 scales_1.2.1 [21] webshot_0.5.4 svglite_2.1.0 openxlsx_4.2.5.1 rio_0.5.29 tzdb_0.3.0 [26] generics_0.1.3 ellipsis_0.3.2 withr_2.5.0 cli_3.4.1 magrittr_2.0.3 [31] crayon_1.5.2 readxl_1.4.1 evaluate_0.18 fansi_1.0.3 xml2_1.3.3 [36] foreign_0.8-82 tools_4.1.2 data.table_1.14.4 hms_1.1.2 lifecycle_1.0.3 [41] munsell_0.5.0 reprex_2.0.2 zip_2.2.2 compiler_4.1.2 systemfonts_1.0.4 [46] rlang_1.0.6 grid_4.1.2 fstcore_0.9.12 rstudioapi_0.14 rmarkdown_2.18 [51] gtable_0.3.1 DBI_1.1.3 curl_4.3.3 R6_2.5.1 fastmap_1.1.0 [56] utf8_1.2.2 stringi_1.7.8 parallel_4.1.2 Rcpp_1.0.9 vctrs_0.5.0 [61] dbplyr_2.2.1 tidyselect_1.2.0 xfun_0.34 >
renv::snapshot() i ./renv.lock
{ "R": { "Version": "4.1.2", "Repositories": [ { "Name": "CRAN", "URL": "https://cloud.r-project.org" } ] }, "Packages": { "DBI": { "Package": "DBI", "Version": "1.1.3", "Source": "Repository", "Repository": "CRAN", "Hash": "b2866e62bab9378c3cc9476a1954226b", "Requirements": [] }, "tinytex": { "Package": "tinytex", "Version": "0.42", "Source": "Repository", "Repository": "CRAN", "Hash": "7629c6c1540835d5248e6e7df265fa74", "Requirements": [ "xfun" ] }, "tzdb": { "Package": "tzdb", "Version": "0.3.0", "Source": "Repository", "Repository": "CRAN", "Hash": "b2e1cbce7c903eaf23ec05c58e59fb5e", "Requirements": [ "cpp11" ] }, "zip": { "Package": "zip", "Version": "2.2.2", "Source": "Repository", "Repository": "CRAN", "Hash": "c42bfcec3fa6a0cce17ce1f8bc684f88", "Requirements": [] } } }


4. "Happy path"

Per a feina reproduïble

Comandes en terminal - Màquina 1
cd carpeta_de_projecte git init R [obrir projecte de RStudio] renv::init() # per inicialitzar renv al projecte de codi renv::snapshot() # per fer foto instantània de llista de paquets d'R emprats a tot el projecte i les seves versions respectives q() git commit ... git push
Comandes en terminal - Màquina 2
cd carpeta_de_projecte git clone/git pull ... R [obrir mateix projecte de RStudio] renv::status() # per a informe de quins passos proposa fer renv::restore() # per restaurar biblioteca de paquets (i versions) del projecte [continuar treballant en el codi] renv::snapshot() # per fer nova foto instantània (si hi ha nous paquets /io versions de paquets d'R més noves o més velles ;-) ) q() git commit ... git push


5. Infraestructura

Els projectes amb renv escriuen i empren aquests arxius per funcionar:

Arxiu Ús
.Rprofile Emprat per activar renv per a noves sessions iniciades en el projecte (des de fora de RStudio també).
renv.lock L'arxiu lockfile, que descriu l'estat de la biblioteca de paquets del teu projecteen un moment del temps.
renv/activate.R L'script d'activació executat per l'arxiu .Rprofile del projecte.
renv/library La biblioteca privada de paquets del projecte.
renv/settings.dcf Configuració del projecte – veure ?settings per més detalls.


Per omissió, renv empra memòria cau de paquets aquí:

Platform Location
Linux ~/.local/share/renv
macOS ~/Library/Application Support/renv
Windows %LOCALAPPDATA%/renv

6. Us avançat

renv::install("paquet", version="0.1") # per instal.lar versions antigues d'un paquet (útil també per a paquets descontinuats a CRAN!). Veure números de versió possibles a https://cran.r-project.org/src/contrib/Archive/paquet/ renv::record("paquet", version="0.1") # per desar a renv.lock la versió concreta renv::deactivate() # per desactivar temporalment renv en el projecte renv::activate() # per reactiar renv al projecte renv::equip() # per a instal.lacions especials en windows vignette("docker", package = "renv") # per a ús combinat amb docker vignette("collaborating", package = "renv") # per millorar us col.laboratiu en equips



I moltes més. Veure:
https://rstudio.github.io/renv/articles/renv.html

7. Gràcies


Dr. Xavier de Pedro Puente


Aquestes diapositives són disponibles a:
https://seeds4c.org/renv

Image







Image
Unless elsewhere noted, contents of this web site are released under a Creative Commons license.