Introducción

Vásquez Guerra Carlos Fernando

1/06/2020

El propósito de este curso es otorgar el mayor conocimiento posible del lenguaje de programación R a un nivel básico-intermedio con el que sean capaces de manipular fuentes de información, crear gráficas informativas y llamativas, obtener mediante el software RStudio reportes en distintos formatos y obtener experiencia para la resolución de problemas que requieran este tipo de herramientas.

Temario


A lo largo de este curso se verán varios temas generales sobre el lenguaje R y de ciertas librerías especiales diseñadas para problemas específicos, así como funciones especiales que faciliten ciertas tareas.

Por el momento, se tiene el siguiente esquema para el temario, el cual puede irse modificando y desglosando con el transcurso del tiempo.

  • Introducción a R.
  • Introducción a RMarkdown.
  • R básico.
  • Gráficas en R base.
  • Introducción y uso del tidyverse (dplyr, magrittr, ggplot, etc.).
  • Gráficas interactivas.

Programación con R


Qué es R?

  • R es un lenguaje de programación interpretado diseñado para la computación estadística y proporcionar un ambiente gráfico.

  • R esta basado en el lenguaje de programación estadístico S, el cual fue desarrollado en los laboratorios Bell por John Chambers, Rick Becker y Allan Willks. Este lenguaje llamaba a subrutinas de FORTRAN aunque después, en 1988, fue reescrito en lenguaje C.

  • La idea de R nació en Nueva Zelanda por Ross Ihaka y Robert Gentleman con la intención de crear un lenguaje que ayudará en la enseñanza estadística de la Universidad Nueva Zelanda, esto en 1992, y fue hasta 1995 que se lanzo una primera versión estable. Ya mediados de 1997 se creo un grupo para modificar el código fuente de este lenguaje.

  • La mayoría de las funciones en R están escritas en el propio lenguaje pero, gracias al trabajo de la comunidad, se han hecho muchas implementaciones y procedimientos que están escritos en C, C++ y FORTRAN para lograr una mayor eficiencia en cuanto al tiempo y memoria.

  • A partir de 1995 se decide usar la licencia GNU para que R sea un software libre, es decir, que se puede consultar el código fuente, se puede modificar las funciones internas, aunque no es buena idea si no se tiene un conocimiento profundo del lenguaje.

  • R no esta diseñar para ser un lenguaje de programación rápido, si no que su propósito es hacer un análisis de datos interactivo y fácil para humanos.

Referencias

The R Fundation (2020). What is R? https://www.r-project.org/about.html

Wickham, H. (2019). Advanced r. CRC press. https://adv-r.hadley.nz/index.html

Wikipedia contributors. (2020, May 31). R (programming language). In Wikipedia, The Free Encyclopedia. Retrieved 15:18, June 1, 2020, from https://en.wikipedia.org/w/index.php?title=R_(programming_language)&oldid=960049940


¿Porqué programar en R?

Fuente de la imagen: http://bigdatasciencetraining.com/importance-of-learning-r-for-data-science/

Hay muchas razones por las cuales aprender R es buena idea, aún si es el primer lenguaje de programación con el que se tiene contacto, algunas de esas razones son las siguientes

  • Es un software de código libre por lo que es posible obtener el código fuente de muchas librerías. Por ejemplo, el siguiente enlace redirecciona al repositorio en Github para el uso de emojis en R y RMarkdown.
  • Es multiplataforma, por lo que lo podemos usar en sistemas operativos como MacOS, Windows y Linux.
  • Hay una creciente comunidad por lo que la cantidad de paquetes sigue aumentando.
  • Existen librerías para una codificación tan eficiente como otros lenguajes de programación.
  • En R se tiene una gran cantidad de herramientas para elementos gráficos.
  • Es posible hacer interacción con otros lenguajes y aplicaciones.
  • Se tienen más de 4000 paquetes en el CRAN.
  • Sigue siendo un lenguaje popular.
Fuente de la imagen: https://stackoverflow.blog/2017/10/10/impressive-growth-r/
  • También pueden pasar un buen rato descubriendo más cosas en algunos sitios interesantes 🙇

  • R-bloggers.
  • RPubs


Ayuda

A continuación se presenta una lista de una serie de recursos, funciones y sitios donde pueden consultar información, preguntar e investigar más acerca de todo los problemas que puedan surgir.


RStudio

RStudio es una IDE disponible desde el 2011 que nos permite trabajar de una manera más fluida con el lenguaje de programación R incluyendo una consola donde se puede trabajar de manera directa con el lenguaje, un editor de textos para guardar nuestro código, crear Scripts, etc, distintos paneles para visualizar gráficas, navegar en los distintos directorios donde estemos posicionados y un gran conjunto de herramientas que facilitan la integración de librerías y la creación de documentos de distintas extensiones.

En RStudio también podemos trabajar con otros lenguajes de programación e integrar estos con R, como por ejemplo Python; de hecho, desde el 2019 se tiene soporte para Notebooks de Jupyter. Además de que, como cualquier IDE, podemos personalizar un poco la interfaz para trabajar más cómodamente.

Fuentes: RStudio 1.1 Preview - I Only Work in Black; Theme Black.

Hay que tener en cuenta los siguientes puntos:

  • Hay una sesión de R corriendo cuando estamos en RStudio.
  • La consola de R es la interfaz entre R y nosotros.
  • En la sesión hay objetos. Todo en R es un objeto: vectores, tablas, funciones, etc.
  • Operamos aplicando funciones a los objetos y creando nuevos objetos.

Markdown

Antes de comenzar a echar código debemos aprender como escribir notas, y esto lo haremos a través de un RMarkdown. Markdown es un lenguaje de marcado, así como lo es HTML, creado por John Gruberque donde, mediante una sitaxis fácil de aprender, se pueden crear archivos de texto plano integrando elementos para mejorar el formato de este. En el caso de RMarkdown, además de la sintaxis de Markdown, se pueden integrar elementos de HTML, CSS(Cascading Style Sheets)) y LaTex, con la finalidad de obtener archivos con distinta extensión, como lo son pdf, html y word.


Es cierto que ciertos archivos no se podrán llevar de una manera directa de uno a otro, como html a pdf cuando se tienen gráficas interactivas, pero siempre se tiene la posibilidad de integrar código y resultados del lenguaje de programación con el que se este trabajando en el tipo de archivo de salida. Uno de las primeras herramientas es Zepellin; otras aplicaciones de este estilo son: Jupyter, Typora, etc.

La ayuda fundamental para una librería de R, como generalmente va a ser si se tiene disponible, es una CheetSheet y la correspondiente a RMakdown se puede descargar del siguiente enlace


Para facilitar y complementar un poco la sintaxis, aquí se enlistan algunos puntos recurrentes

  1. Se pueden agregar comentarios en MarkDown empezando <!– y terminando con –>.

  2. Cuando se esta trabajando en \(\LaTeX\), generalmente se agrega algo llamado preámbulo al inicio de los archivos .tex donde se colocan todos los comandos para darle formato al texto, en este caso se podría agregar un preámbulo agregando en el YAML en la sección includes: in_header: o se pueden agregar las librerías de LaTex directamente dentro de header_includes:

  1. Es posible agregar bibliografía de un archivo .bib. Esto puede hacerse en la sección bibliography: del YAML, por ejemplo: bibliography:"bib/library.bib". El estilo de esta también se puede en la sección csl:, por ejemplo: csl:acm-sig-proceedings-long-author-list.csl

  1. Hay muchas opciones que se pueden agregar de acuerdo al tipo de archivo que se este creando. Para el caso un archivo HTML se puede cambiar el tema, agregar una opción para ocultar o desglosar el código adjunto, cambiar ancho y alto de las imágenes, etc. Algunas opciones son las siguientes:
  • html_document:

    • df_print: paged (Formato para tablas)
    • highlight: tango (Diseño)
    • code_folding: hide (Esconder código)
    • theme: flatly (Tema)
    • toc: yes (Tabla de contenidos o un índice) (table of contents)
    • toc_float: yes (TOC con mejor diseño)
    • fig_width: 9 (Ancho)
    • fig_height: 5 (Largo)

Donde mínimo se tienen las siguientes opciones:

  • highlight: default, tango, pygments, kate, monochrome, espresso, zenburn, haddock, and textmate
  • theme: default, cerulean, journal, flatly, darkly, readable, spacelab, united, cosmo, lumen, paper, sandstone, simplex, and yeti.
  • df_print: default, kable, tibble, paged

Para un archivo PDF, se tienen también una gran cantidad de opciones para personalizar el documento

  • pdf_document:
    • df_print: kable (Formato para tablas)
    • fig_caption: yes (Etiquetas a las imágenes y gráficas)
    • number_sections: yes (Secciones)
    • toc: yes (Tabla de contenidos o un índice) (table of contents)
    • toc_depth: 5 (Jerarquía de subtitulos) (profundidad del índice)
    • fig_width: 7 (Ancho)
    • fig_height: 4 (Largo)
    • tex_keep: true (Para devolver el archivo .tex)
    • extra_dependencies: [“amsfonts”, “dsfont”, “mathrsfs”, “bbold”] (Para más librerías de \(\LaTeX\))

Sea cual sea formato de salida que se eliga, se pueden generalizar algunas características del archivo

  • documentclass: book (Tipo de documento)
  • classoption: a4paper (Tamaño del documento)
  • fontsize: 12pt (Tamaño de letra)
  • geometry: “top=1in, left=0.9in, right=1.25in, bottom=1in” (Bordes de la página)
  • linkcolor: blue (Color para hipervínculos)
  • urlcolor: blue (Color para enlaces)

  1. Como ya se ha mencionado, se puede hacer una integración con el código que se este desarrollando, así que aquí tenemos algunas opciones generales para los bloques donde va contenido el código llamados chunks
  1. Para las imágenes podemos usar alguna función establecida en R, o bien podemos hacer uso de lo que nos permite MarkDown. Por ejemplo, para insertar una imagen de unos gatitos podemos hacer lo siguiente: ![Gatitos](source/gatitos.png)
Gatitos

Gatitos

  1. Otro punto importante es que la generación de tablas podemos obtenerla directamente de una “tabla” que se produzca con código, aunque ciertas veces se puede preferir hacer una tabla de manera manual. En la página Tables Generator se pueden crear estas con una interfaz amigable y simplemente copiar y pegar el resultado aquí mismo, ya sea en formato Markdown, HTML o en \(\LaTeX\).

  2. La integración del código en R se puede hacer mediante un chunk o mediante un ejecución en linea, para esto hay que seguir la siguiente sintaxis: \(`\)r code\(`\), por ejemplo, este 🐒 fue generado a través de un comando inline.

  3. En el siguiente enlace pueden encontrar un poco más sobre la nomenclatura que se tiene en YAML

Finalmente, existen muchas fuentes de donde obtener información, aunque una de las más completas es del Bookdown R Markdown: The Definitive Guide y la página oficial de RMarkdown.

Sugerencias y comentarios al correo