1  Fundamentos del programa

1.1 ¿Qué es R?

R es un sistema de computación y gráficos estadísticos. Este sistema se compone de dos partes: el lenguaje R en sí (que es a lo que la mayoría de la gente se refiere cuando habla de R) y un entorno de ejecución.

R es un lenguaje interpretado, lo que significa que los usuarios acceden a sus funciones a través de un intérprete de línea de comandos.

A diferencia de lenguajes como Python y Java, R no es un lenguaje de programación de propósito general. En cambio, se considera un lenguaje de dominio específico (DSL), lo que significa que sus funciones y uso están diseñados para un área de uso o dominio específico.

En el caso de R, eso es cálculo y análisis estadístico. Por extensión, R se usa comúnmente para todo tipo de tareas de ciencia de datos.

R está equipado con un gran conjunto de funciones que permiten visualizaciones de datos, para que los usuarios puedan analizar datos, modelarlos según sea necesario y luego crear gráficos. Además de las funciones gráficas integradas del lenguaje, existen numerosos complementos o módulos que lo facilitan.

1.2 ¿Qué es un IDE - Rstudio?

Aunque podemos usar R directamente, es recomendable instalar y usar un entorno integrado de desarrollo (IDE, por sus siglas en inglés).

Podemos utilizar R ejecutando nuestro código directamente desde documentos de texto plano, pero esta es una manera poco efectiva de trabajar, especialmente en proyectos complejos.

Un IDE nos proporciona herramientas para escribir y revisar nuestro código, administrar los archivos que estamos usando, gestionar nuestro entorno de trabajo y algunas otras herramientas de productividad. Tareas que serían difíciles o tediosas de realizar de otro modo, son fáciles a través de un IDE.

Hay varias opciones de IDE para R, y entre ellas el más usado es RStudio. Este entorno, además de incorporar las funciones esenciales de una IDE, es desarrollado por un equipo que ha contribuido de manera significativa para lograr que R sea lenguaje de programación más accesible, con un énfasis en la colaboración y la reproducción de los análisis.

1.2.1 Rstudio

Aunque RStudio se refiere al IDE que se utiliza al codificar en R, se entiende mejor como un conjunto de herramientas que ayudan a los analistas a administrar, visualizar, modelar datos e implementar modelos de aprendizaje automático. Analicémoslo por sus características principales.

RStudio es un editor de código que viene con resaltado de sintaxis, finalización de código y herramientas de depuración. Aquí es donde escribe su código R directamente, y estas características hacen que el proceso de codificación sea más fluido y eficiente, lo que se vuelve más importante a medida que las bases del código crecen en complejidad. También viene con una consola interactiva que le permite ejecutar bits o scripts completos de código R para ver los resultados en tiempo real.

A diferencia de otros IDE, RStudio tiene un navegador de espacio de trabajo que realiza un seguimiento de las variables, funciones, listas y marcos de datos que se utilizan en su entorno actual. Tener una visualización de los objetos que estás manipulando es una característica subestimada. De manera similar, RStudio también tiene una ventana de trazado incorporada que muestra cualquier trazado que genere mientras realiza un análisis de datos exploratorio. Incluso puedes editar y guardar estos gráficos directamente.

RStudio se integra bien con otras herramientas. Por ejemplo, puede implementar el control de versiones con Git, que le permite rastrear y manejar los cambios en el código a lo largo del tiempo y con varios codificadores R trabajando en el mismo proyecto. También es compatible con Shiny, por lo que puede crear aplicaciones web o paneles interactivos en R sin necesidad de saber nada sobre desarrollo o implementación web.

RStudio también viene con una interfaz de cuaderno que, similar a Jupyter Notebooks de Python, le permite incluir código, texto (rebajas) y gráficos dentro de un solo documento de cuaderno. Esto se utiliza con frecuencia en la fase de análisis de datos exploratorios o como una forma de compartir su flujo de trabajo de análisis en un formato narrativo con otros.

1.3 Definición de Programación orientada a objetos

En términos genéricos, todos los elementos que maneja R son objetos: un valor numérico es un objeto, un vector es un objeto, una función es un objeto, una base de datos es un objeto, un gráfico es un objeto, etc.

Para realizar un uso eficiente de R es preciso entender y aprender a manipular bien las distintas clases de objetos que maneja el programa.

R utiliza, de hecho, programación orientada a objetos. Ello significa que una misma función hace cosas distintas según la clase del objeto que recibe como argumento, pudiendo incluso no hacer nada (o producir un error) si se le pasan argumentos de una clase inadecuada.

1.3.1 Ejemplo

Veamos como la función plot() puede mostrar distintos gráficos según la clase del objeto a representar. Para ello supongamos que el siguiente vector representa el número de animales callejeros rescatados mensualmente en el Refugio de Los Olivos durante el año 2022:

animales_rescatados <- c(20,15,31,27,41,50,36,22,52,24,31,60)
animales_rescatados
 [1] 20 15 31 27 41 50 36 22 52 24 31 60
class(animales_rescatados)
[1] "numeric"

La función class() nos devuelve la clase del objeto animales_rescatados, que como vemos es numeric. Podemos obtener una representación gráfica de este vector simplemente mediante:

plot(animales_rescatados)

Ahora convertimos estos datos en serie temporal mediante la función ts(), indicando que esta serie comienza en enero del año 2022 y que tiene una frecuencia de 12 observaciones por año. 

animales_rescatados2 <- ts(animales_rescatados,frequency=12,start=c(2022,1))
animales_rescatados2
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2022  20  15  31  27  41  50  36  22  52  24  31  60
class(animales_rescatados2)
[1] "ts"

Como podemos ver, la clase del objeto animales_rescatados2 es ts (time series). Podemos comprobar que si aplicamos la misma función plot() a animales_rescatados2, el gráfico obtenido es distinto que cuando se aplica a animales_rescatados, aún cuando los datos sean exactamente los mismos:

plot(animales_rescatados2)

La función plot como muchas otras funciones en R, primero comprueba cuál es la clase del objeto sobre el que debe actuar, y en función de ello se comporta de una manera u otra.