Reproducibility matters: Make it easy in R with packrat/renv and docker

  1. mkdir
  2. git init
  3. hub create (Sólo en Mac?)
  4. open rstudio
  5. new project
  6. existing directory > brow rstudio modifica automáticamente .gitignore
  7. instalar packrat/renv 7a. packrat::init() crea el archivo .Rprofile y la carpeta packrat con varios archivos y carpetas. se añade a .gitignore packrat/lib*/ En realidad, solamente hace falta packrat.lock??? 7b. renv::init() crea el archivo .Rprofile y la carpeta renv con varios archivos y carpetas. No se modifica .gitignore En realidad, solamente hace falta renv
  8. instalamos un paquete pequeño de prueba install.packages(“glue”)
  9. creamos un archivo demo.R library(glue) print(glue(“Hello World!”))
  10. packrat/renv::snapshot() añade el paquete al archivo .lock
  11. git add –all && git commit -m “message” && git push –set-upstream origin master (solamente la primera vez. Luego sólo git push)
  12. clonamos localmente los repositorios en nuevas carpetas git clone …
  13. abrimos el archivo del proyecto y automáticamente packrat/renv se activa y se instala.
  14. restore instala el paquete
  15. hacemos source a demo.R y funciona docker 16.cerramos el proyecto, borramos las carpetas del clone y entramos en el proyecto orignial 17a. creamos el dockerfile para packrat FROM rocker/rstudio:3.6.1

RUN apt-get update
&& apt-get install -y
libxml2-dev
libcairo2-dev
vim
&& R –no-save –no-restore -e ‘install.packages(“packrat”)’

WORKDIR /home/rstudio/project COPY . .

RUN R –no-save –no-restore -e ‘packrat::restore()’
&& echo ‘.libPaths(“/home/rstudio/project/packrat/lib/x86_64-pc-linux-gnu/3.6.1”)’ >> /home/rstudio/project/.Rprofile
&& chown -R rstudio:rstudio . 18. git push 19. git clone 18. docker build 19a. demo.R funciona sin entrar en el proyecto. Creo porque se crea Rprofile.site. He modificado el dockerfile como está ahora arriba y solamente funciona si entras en el proyecto; tal como debe de ser. 20a. Funciona con paquetes descargados de github 21a. Solamente hace falta el packrat.lock. Podemos añadir a .gitignore .Rprofile packrat/ !packrat/packrat.lock

Binder

22a. Usar opción a: compendium_description y docker file opcion b no permite instalar paquetes de github

Avatar
Alberto Cebada Aleu, Ph.D.
Data Scientist at

Alberto is a biochemist and Ph.D. in Biomedical Science who loves programming and found in Data Science the best of both worlds.