Foto-trampeo reproducible: R, RStudio, RMarkdown, RPubs y GitHub

S Mandujano R

2020-06-18


Basado en uno de los capítulos del libro titulado: “Monitoreo de Fauna Silvestre: Conceptos, Métodos y Análisis en R” por SMandujanoR. (Próximamente disponible).


Introducción

Indudablemente estamos en la época R. Esto es así debido, entre otros factores, a que este programa proporciona un amplio abanico de herramientas estadísticas y gráficas; es un lenguaje de programación lo que permite a los usuarios extenderlo definiendo sus propias funciones. Pero sobre todo, R es gratuito y los interesados pueden descargar directamente de la biblioteca CRAN (http://cran.r- project.org/) más de 14 mil paquetes para innumerables propósitos. Además, R permite crear paquetes propios los cual eventualmente pueden estar disponibles en esta misma biblioteca u otras plataformas.

En consecuencia, R ha perneado positivamente en el trabajo ecológico como puede constatarse, por citar solo tres libros: “Numerical Ecology with R” de Borcard et al. (2011) y “Habitat Suitability and Distribution Models: with Applications in R” (Guisan et al. 2017). En particular, un par de libros que introducen y profundizan en una amplia variedad de tópicos para analizar y presentar datos son “The R Book” (Crawley 2012) y “R for Data Science” (Wickham y Grolemund 2016).

Figura 1. Las cinco herramientas empleadas en este libro para procesar y publicar en la red datos y análisis del foto-trampeo: R, RStudio, RMarkdown, RPubs y GitHub.

Figura 1. Las cinco herramientas empleadas en este libro para procesar y publicar en la red datos y análisis del foto-trampeo: R, RStudio, RMarkdown, RPubs y GitHub.

El objetivo del presente capítulo es describir de manera muy breve las principales características y ventajas del programa R. En particular, el empleo de RStudio como una plataforma muy sencilla, amable y útil para procesar los análisis en R (Figura 1). En particular, su potencial para organizar y analizar datos de foto-trampeo (y de cualquier otro dato biológico), y para crear reportes con el paquete RMarkdown. Asimismo, en este capítulo se presenta la manera para publicar electrónicamente documentos en formato HTML empleando RPubs e se introduce el empleo de GitHub como repositorio de documentos. Finalmente, el título de este capítulo “Foto-trampeo reproducible” está en línea con una perspectiva que cada vez cobra más importancia en el trabajo científico y es el referente a poder hacer investigación que sea reproducible o repetible. Para profundizar en este enfoque se sugiere consultar el libro Reproducible research with R and Rstudio (Gandrud 2013).

Figura 2. Sitio para instalar R.

Figura 2. Sitio para instalar R.


R

R es un sistema para análisis estadísticos y gráficos. El primer paso es instalar la versión más reciente de R que corresponda con el sistema (Windows, Mac, Linux u otro) de nuestro equipo de cómputo desde: https://cran.r-project.org/ (Figura 2).


RStudio

Desde la consola de R se pueden ejecutar todos los códigos para los análisis, gráficos y otros. Sin embargo, se sugiere ampliamente instalar RStudio desde: https://www.rstudio.com/products/rstudio/download/ (Figura 3). Una vez instalado, al ejecutar RStudio se abre la pantalla dividida en cuatro áreas de trabajo (Figura 4). El panel superior izquierdo es el editor donde se escriben los scripts, líneas o códigos R además donde se trabaja desde RMarkdwon. El panel inferior izquierdo es la consola propia de R. El panel superior derecho está constituido de varias pestañas: Files, Plots, Helpy Viewer la cual es una área de trabajo muy útil para diversas tareas. El panel derecho inferior también está constituido de varias pestañas: Environment, History, Connectiosy en esta caso Git porque ya se instaló ese paquete. Se sugiere configurar las preferencias de RStudio desde Tools y luego Global options (Figura 5). Para emplear caracteres en español se sugiere definir como código UTF-8. Para profundizar el empleo de RStudio se sugiere “Learning RStudio for R Statistical Computing” (Van der Loo y Mark 2012).

Figura 3. Sitio para la instalación de RStudio.

Figura 3. Sitio para la instalación de RStudio.

Figura 4. Ambiente de trabajo en RStudio.

Figura 4. Ambiente de trabajo en RStudio.

Figura 5. Opociones para modificar las preferencias de RStudio.

Figura 5. Opociones para modificar las preferencias de RStudio.


Paquetes R

Al instalar inicialmente R se cargan numerosos paquetes y funciones todo listo para trabajar. Sin embargo, para objetivos particulares se han creado paquetes que pueden ser instalados directamente desde RStudio (Figura R6). para estos casos se sugiere instalar siempre las dependencias asociadas a cada paquete, para lo cual simplemente se “palomea” en el recuadro de opciones. Una vez instalados los paquetes, para trabajar deben cargarse previamente empleando la función:

library(poner aquí nombre del paquete)
Figura 6. Para decargar e instalar paquetes R desde RStudio.

Figura 6. Para decargar e instalar paquetes R desde RStudio.


Proyectos en RStudio

Una manera muy eficiente y recomendable de trabajar en RStudio es crear proyectos. Esto permite tener en una misma carpeta todos archivos con diferentes formatos (.R, .Rmd, .jpg, .shp, etc.). Para crear un nuevo proyecto simplemente en la parte superior derecha de RStudio, se siguen los pasos en la Figura 7.

Figura 7. Pasos para crear un proyecto RStudio fundamental para organizar diferentes tipos de archivos, ejecutar y compilar códigos R, compilar en diferentes formatos desde RMarkdown e incluso subir al repositorio de GitHub.

Figura 7. Pasos para crear un proyecto RStudio fundamental para organizar diferentes tipos de archivos, ejecutar y compilar códigos R, compilar en diferentes formatos desde RMarkdown e incluso subir al repositorio de GitHub.

A manera de ejemplo en la Figura 8 se muestra un proyecto completo en el cual se tienen todos archivos ligados a este proyecto. Observando el panel superior derecho se observan no solo archivos de códigos R (que pueden ser varios dentro de un mismo proyecto), sino además archivos tipo .txt, .html, .pdf, .jpg, etc. Es decir, en un solo proyecto se tiene toda la información que se requiere para su ejecución, así como archivos generados en el mismo. Como se mencionó, un proyecto no solo consiste en que se genera una carpeta específica, sino queRStudio` crea una estructura interna que permite la lectura y almacenamiento dentro de la misma. Esto evita tener que estar escribiendo la ruta de lectura.

Figura 8. Ejemplo de un proyecto llamado `modelos CR clásicos.

Figura 8. Ejemplo de un proyecto llamado `modelos CR clásicos.


Compilación de códigos R

Se puede obtener un informe o reporte de cada código ejecutado empleando la función Compile Report desde RStudio como se muestra en la Figura 10. El reporte o compilación se puede generar en tres formatos (Figura 11). Un ejemplo de la compilación de un código o script R en formato HTML se muestra en la Figura 12. Estas compilaciones son muy útiles para reportar avances de análisis y que se pueda mirar todo el proceso de análisis. Para revisiones previas resulta de mucha utilidad esta función de RStudio.

Figura 10. Compilación de códigos R desde RStudio.

Figura 10. Compilación de códigos R desde RStudio.

Figura 11. Formatos HTML, PDF y MS Word para generar reportes de los códigos R.

Figura 11. Formatos HTML, PDF y MS Word para generar reportes de los códigos R.

Figura 12. Ejemplo de compilación de un código R en formato HTML.

Figura 12. Ejemplo de compilación de un código R en formato HTML.


RMarkdown

Markdown es un lenguaje comúnmente empleado para escribir textos y documentos electrónicos. La versión R de Markdown es el paquete rmarkdown el cual debe instalarse similar a cualquier otro paquete (Figura 14)). RMarkdown tiene como base los paquetes knitr y Pandoc lo que permite realizar un gran número de tareas con diferentes objetivos (Figura 15). Como por ejemplo:

Figura 14. RMarkdown para generar documentos con  diferentes formatos. Tomado de http://.

Figura 14. RMarkdown para generar documentos con diferentes formatos. Tomado de http://.

  1. Compilar documentos en formatos como:
    • PDF
    • HTML
    • ebooks
    • Word
  2. Crear presentaciones en formatos:
  3. Escribir documentos como:
  4. Crear websites y blogs.
  5. Construir aplicaciones interactivas en Shiny.

  6. Recursos adicionales en Internet:

Para crear un documento se tiene que ir a la pestaña File, seleccionar New File y RMarkdown (Figura 15). Luego se despliega la ventana New R Markdown con las opciones Document, Presentation, Shiny y From Template. Si se selecciona Document se abre una nueva ventana con las opciones de crear el documento en diferente formato: HTML, PDF y Word (Figura 16).

Por ejemplo, si uno selecciona el formato HTML se creará automáticamente un documento con la exención .Rmd (Figura @ref(fig:R17)). En este documento se puede integrar texto empleando lenguaje Markdown . Para conocer la sintaxis de Markdown se sugiere visitar https://www.rstudio.com/wp-content/uploads/2015/02/rmarkdown-cheatshhet.pdf. Además, en un documento RMarkdown se pueden incluir imágenes y códigos R ejecutables en tiempo real empleando los llamados chunks. El documento se puede visualizar en cualquier momento no solo en el formato inicialmente seleccionado, sino además en otros formatos disponibles. Para esto se ejecuta la función Knit del paquete knitr el cual debe estar previamente instalado (Figura @ref(fig:R17)).

Figura 15. Ventana para crear un documento RMarkdown desde RStudio.

Figura 15. Ventana para crear un documento RMarkdown desde RStudio.

Figura 16. Ventana para seleccionar diferentes formatos del documento RMarkdown.

Figura 16. Ventana para seleccionar diferentes formatos del documento RMarkdown.

Figura 17. Ejemplo de un documento RMarkdown en formato HTML. Una vez ejecutado el comando Knit aparece como en el panel derecho.

Figura 17. Ejemplo de un documento RMarkdown en formato HTML. Una vez ejecutado el comando Knit aparece como en el panel derecho.

Figura 18. Para compilar un documento RMarkdown se emplea Knit el cual da la opción de que un mismo documento sea generado en diferentes formatos.

Figura 18. Para compilar un documento RMarkdown se emplea Knit el cual da la opción de que un mismo documento sea generado en diferentes formatos.

Figura 19. Presentación como PDF Beamer muy útil para presentaciones en público.

Figura 19. Presentación como PDF Beamer muy útil para presentaciones en público.

Figura 20. Desde RMarkdown se pueden generar libros electrónicos o ebooks.

Figura 20. Desde RMarkdown se pueden generar libros electrónicos o ebooks.

Otra ventaja de emplear RMarkdown es que un mismo documento puede ser compilado no solo como un PDF, HTML y Word, sino en otros formatos como presentaciones, presentaciones PDF Beamer (Figura 19) (se sugiere visitar el sitio: https://hartwork.org/beamer-theme-matrix/ para seleccionar alguna plantilla entre las muchas disponibles); formatos de libros electrónicos ebook (Figura 20), o bien seleccionar la plantilla de alguna revista científica para someter manuscritos a publicación empleando el paquete rticles por ejemplo. Para hacer las modificaciones e incluir muchas otras opciones de edición, lo se tiene que aprender como se modifica el llamado YAML o encabezado de los documentos en RMarkdown.

Para profundizar en el empleo de RMarkdown se sugiere consultar el libro “R Markdown: The Definitive Guide ” (Xie 2018). El paquete bookdown es otra herramienta para crear documentos Markdown, particularmente para libros en formatos PDF, ebooks y otros. Para este caso se sugiere el libro “bookdown: Authoring Books and Technical Documents with R Markdown” (Xie 2016). Incluso con RMarkdown se pueden escribir tesis para lo cual se sugiere visitar sitios como: https://eddjberry.netlif.com/post/writing-your-thesis-with-bookdown.


RPubs

Los documentos compilados en HTML desde RMarkdown pueden ser publicados en la web. Existen diferentes portales para realizar esto, sin embargo aquí se sugiere emplear RPubs el cual es un servicio gratuito que facilita publicar documentos en la web directamente desde RStudio.

Figura 21. RPubs herramienta para publicar documentos HTML desde RStudio.

Figura 21. RPubs herramienta para publicar documentos HTML desde RStudio.

Para iniciar, en el panel superior izquierdo se muestra la ventana donde se selecciona Publish desde el documento HTML (Figura 21). Se despliega una nueva ventana (centro/izquierda) con la opción gratuita RPubs y la de cobro RStudio Connect. Al seleccionar la primera se abre una nueva ventana (inferior/izquierda) y al aceptar entrará a la web del sitio. Se abre ventana de dos pasos sencillos (superior/derecha). Es necesario estar registrado previamente para tener usuario y contraseña. En el segundo paso se pone un nombre al HTML y un breve resumen del objetivo del mismo. Si todo está bien se publicará (centro/derecho) en formato HTML disponible para su lectura. RPubs permite tener tantas publicaciones HTML como se guste. Por ejemplo, el sitio del autor es http://rpubs.com/SMR8810 (inferior/derecha). Para mayores detalles se sugiere visitar el sitio en: https://rpubs.com.


GitHub

GitHub es un sistema de gestión de proyectos, control de versiones y plataforma de red social que permite trabajar en colaboración con otros personas. En particular, GitHub es un sitio web y un servicio en la nube que permite almacenar y administrar códigos, archivos y otros, además de que permite llevar un control sobre cualquier cambio a los códigos y proyectos. Para emplear e interaccionar en GitHub se requiere una cuenta de usuario (Figura 22). GitHub es un repositorio, por lo tanto se requiere de una plataforma para interaccionar.

Figura 22. GitHub reporsitorio de archivos para compartir y trabajar en versiones de control de códigos y otros documentos con la comunidad de usuarios.

Figura 22. GitHub reporsitorio de archivos para compartir y trabajar en versiones de control de códigos y otros documentos con la comunidad de usuarios.

Para los fines del presente libro de Foto-trampeo en R se sugiere emplear RStudio de dos maneras. La primera es para ejecutar todos los códigos R de cada uno de los capítulos tanto del Volumen I (https://github.com/SMandujanoR/Foto-trampeo-R-Vol_I) como del Volumen II (https://github.com/SMandujanoR/Foto-trampeo-R-Vol_II). Para esto, es necesario que se descargue o clone todos las carpetas de cada uno de los capítulos (Figura 23). Una vez descargado el .zip en la computadora personal, cada usuario podrá organizar el directorio de trabajo desde donde ejecutará los códigos y ejemplos del libro empleando la función de proyecto RStudio llamada Vol II. Rproj que se descarga en el mismo archivo.

Figura 23. Dirección en GitHub para bajar las carpetas y archivos de trabajo del libro Foto-trampeo en R.

Figura 23. Dirección en GitHub para bajar las carpetas y archivos de trabajo del libro Foto-trampeo en R.

La segunda forma de interaccionar con GitHub, para aquellos usuarios con más experiencia, es modificando los códigos R del libro en aquellas líneas donde encuentre algún error (aunque se revisó exhaustivamente para evitar esto), o bien si quiere aportar alguna sugerencia que mejore el código. En estos casos se sugiere convertir el proyecto RStudio a uno de tipo Version Control, seleccionando Git y luego crear un nuevo repositorio desde GitHub y la dirección URL introducirla en el nuevo proyecto RStudio de versión de control. Desde ahí se podrán emplear las funciones commit, pull y push (Figura 24). Alternativo, se puede emplear la versión GitHub Desktop como una interfase de interacción entre RStudio y GitHub (Figura 25). Todo este proceso puede emplearse para publicar sus propios proyectos. Para mayores detalles se sugiere consultar el libro “The Beginner´s Guide to GitHub” por Mailund (2019).


Sumario

Este capítulo muestra aspectos muy generales del gran potencial del programa R para analizar, visualizar y socializar los resultados de las investigaciones biológicas. R es un programa muy poderoso y sumamente útil para diferentes tareas en el trabajo ecológico. Como se muestra en los diferentes capítulos del presente libro, R sirve para analizar y resolver muchos aspectos en el trabajo de foto-trampeo. A lo largo de cada capítulo se irá detallando diferentes paquetes, funciones y otros aspectos prácticos. Sin embargo, como toda tarea nueva, el aprendizaje y dominio de R no es rápido y requiere de mucha paciencia por parte del usuario. Las cinco herramientas presentadas en este capítulo: R, RStudio, RMarkdown, RPubs y GitHub sirvieron para organizar, analizar, procesar, editar, publicar y depositar el material suplementario de los dos volúmenes del Foto-trampeo R. Para profundizar en algunas de los temas y herramientas tratados en este capítulo se sugiere consultar los siguientes libros: “knitr: a comprehensive tool for reproducible research in R” (Xie 2015) y “Reproducible research with R and Rstudio” (Gandrud 2013).


Referencias

  • Borcard, D., F. Gillet, and P. Legendre. 2011. Numerical Ecology with R. Springer Science; Business Media.

  • Crawley, M. J. 2012. The R Book. John Wiley; Sons.

  • Gandrud, C. 2013. Reproducible Research with R and Rstudio. CRC Press.

  • Guisan, A., W. Thuiller, and N. E. Zimmermann. 2017. Habitat Suitability and Distribution Models: With Applications in R. Cambridge University Press.

  • Van der Loo, Mark PJ. 2012. Learning Rstudio for R Statistical Computing. Packt Publishing Ltd. Wickham, H., and - G. Grolemund. 2016. R for Data Science: Import, Tidy, Transform, Visualize, and Model Data. O’Reilly Media, Inc.

  • Xie, Y. 2015. Dynamic Documents with R and Knitr. Vol. 29. CRC Press.

  • Xie, Y. 2016. Bookdown: Authoring Books and Technical Documents with R Markdown. CRC Press.

  • Xie, Y., J. J. Allaire, and G. Grolemund. 2018. R Markdown: The Definitive Guide. CRC Press.


Información de esta sesión en RMarkdown

## R version 3.6.0 (2019-04-26)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS Sierra 10.12.6
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] bookdown_0.9
## 
## loaded via a namespace (and not attached):
##  [1] compiler_3.6.0  magrittr_1.5    tools_3.6.0     htmltools_0.3.6
##  [5] prettydoc_0.2.1 yaml_2.2.0      Rcpp_1.0.1      stringi_1.4.3  
##  [9] rmarkdown_1.12  highr_0.8       knitr_1.22      stringr_1.4.0  
## [13] xfun_0.6        digest_0.6.18   evaluate_0.13