1 + 2
[1] 3
5 * 3
[1] 15
100 / 4
[1] 25
3^2
[1] 9
3 - (2 * 9)
[1] -15
En este capítulo daremos nuestros primeros pasos con R y RStudio, una interfaz que simplica el uso de este lenguaje de programación. Conoceremos sus características y veremos cómo instalar ambos softwares. Aprenderemos a ejecutar comandos en la consola, escribir y guardar código en scripts, y utilizaremos nuestras primeras funciones en R. Estos conceptos sentarán las bases para programar de manera organizada y eficiente en los próximos capítulos.
Si bien R será nuestro medio de comunicación con la computadora, vamos a usarlo a través de otro programa que brinda algunas herramientas para facilitar nuestro trabajo de programación, es decir, vamos a usar un entorno integrado de desarrollo (o IDE, por integrated development environment). Un IDE es un programa que hace que la codificación sea más sencilla porque permite manejar varios archivos de código, visualizar el ambiente de trabajo, utilizar resaltado con colores para distintas partes del código, emplear autocompletado para escribir más rápido, explorar páginas de ayuda, implementar estrategias de depuración e incluso intercalar la ejecución de instrucciones con la visualización de los resultados mientras avanzamos en el análisis o solución del problema. El IDE más popularmente empleado para programar con R es RStudio.
Para instalar estos programas, se deben visitar las páginas oficiales de R y de RStudio, descargar los instaladores y ejecutarlos. En este documento encontrarás una guía paso a paso, o también podés mirar este video con las indicaciones.
Si experimentás algún problema con la instalación, hay una alternativa para que no pierdas tiempo hasta que los docentes puedan ayudarte a resolverlo. RStudio puede ser usado online sin que lo tengas que instalar. Sólo necesitás conexión a internet. Si necesitás usar esto porque la instalación falló, seguí las instrucciones de este archivo.
Cuando se abre RStudio se pueden visualizar tres paneles principales (Figura 2.1):
En el panel de la izquierda la pestaña más importante es Console (consola), que es donde se ejecutan las instrucciones de R en tiempo real. Es la ventana que usamos para comunicarnos con R. Ahí se escriben las instrucciones para que R las evalúe (también decimos, que las ejecute o corra) y también es el lugar donde se visualizan los resultados.
En el panel de arriba a la derecha la pestaña más importante es Environment (entorno o ambiente), que se encarga de mostrar los elementos que tenemos a disposición para programar. Al inicio de la sesión de trabajo, se encuentra vacío.
En el panel de abajo a la derecha, las pestañas más importantes son:
Más adelante profundizaremos en el uso de estos componentes de RStudio.
La consola de R en RStudio permite ejecutar comandos de manera inmediata. Al presionar Enter
las instrucciones escritas serán evaluadas, produciendo algún resultado. Por ejemplo, podemos escribir expresiones matemáticas sencillas, como la suma 1 + 2
. Para esto, tenemos que hacer clic en la última línea de la consola, al lado del indicador >
(llamado prompt), para asegurarnos que el cursor esté allí titilando. La presencia del prompt >
en esa última línea nos indica que R está preparado para recibir una nueva instrucción. Escribimos ahí la cuenta 1 + 2
y pulsamos Enter
(Figura 2.2).
El resultado o salida se ve inmediatamente debajo de la instrucción: se trata del número 3
, por supuesto. Antes aparece la anotación [1]
, que indica que la primera y única línea de la salida muestra el primer y único resultado de la instrucción evaluada. En algunas operaciones, la salida está compuesta por muchos elementos y ocupa varias líneas. En ese caso R muestra un número entre corchetes al comienzo de cada línea de la salida, para darnos una idea de cuántos elementos nos está mostrando. Por ahora podemos ignorarlo.
Probemos con más cálculos matemáticos:
1 + 2
[1] 3
5 * 3
[1] 15
100 / 4
[1] 25
3^2
[1] 9
3 - (2 * 9)
[1] -15
A veces nos pasa que escribimos una instrucción de forma incompleta y presionamos Enter
. En esta situación, la consola muestra al comienzo de la línea el símbolo +
, señalando que falta “algo más” para que el comando esté completo y se pueda mostrar el resultado. Tenemos que completar lo que falta y presionar Enter
otra vez, o presionar Esc
para cancelar esa instrucción y que la consola vuelva a mostrar el prompt >
, indicando que podemos escribir el código de nuevo desde cero.
En el siguiente ejemplo, en la consola escribí 100 /
y presioné Enter
dos veces. Como la cuenta quedó incompleta, la consola muestra el +
:
> 100 /
+
+
La solución es apretar Esc
para cancelar, o completar la instrucción:
> 100 /
+
+
+ 4
[1] 25
Es importante reconocer que no podemos escribir una nueva instrucción en la consola cuando está el +
porque algo de lo anterior quedó incompleto. Debemos solucionarlo, ver que aparezca otra vez el >
y entonces sí volver a escribir un comando.
Por otro lado, si escribimos una instrucción que R no sabe interpretar o que presenta algún tipo de problema, la salida mostrará un mensaje de error. Por ejemplo, el símbolo para hacer divisiones es /
y no %
. Si lo usamos, pasa esto:
100 % 4
Error in parse(text = input): <text>:1:5: unexpected input
1: 100 % 4
^
Hasta ahora hemos usado la consola de R para ejecutar comandos de manera inmediata. Sin embargo, cuando trabajamos con tareas de programación más complejas, es importante guardar nuestro código para poder reutilizarlo, modificarlo y compartirlo. Para esto, usamos los scripts.
Un archivo de código o script es un archivo de texto que contiene una serie de instrucciones de escritas en algún lenguaje de programación. En lugar de escribir y ejecutar los comandos uno por uno en la consola, podemos escribirlos en un script y ejecutarlos cuando sea necesario. Esto nos permite organizar mejor nuestro trabajo y evitar repetir tareas manualmente. A veces usamos el término programa como sinónimo de script.
El uso de scripts en lugar de escribir código directamente en la consola tiene varias ventajas:
Para crear un nuevo script en RStudio podemos seguir algunas de estas opciones:
File > New > R Script
.Ctrl + Shift + N
.El sector izquierdo de RStudio se subdivide en dos paneles: abajo queda la consola y arriba aparece el editor de scripts (Figura 2.5). Podemos crear o abrir más de un script a la vez, cada uno aparece como una pestaña de este panel.
Una vez creado el script, podemos escribir ahí todo nuestro código de R. Para no perder el trabajo debemos guardar este documento en nuestra computadora, con alguna de estas opciones:
File > Save
.CTRL + S
.La primera vez que guardamos el script recién creado, tendremos que elegir un nombre para el archivo y un lugar en la computadora para su ubicación. En el caso presentado en la Figura 2.4, elegimos el nombre “ejemplos”.
Ahora la pestaña del editor de scripts muestra el nombre elegido para el archivo seguido por .R
, es decir, vemos que dice: ejemplos.R
. El nombre de un archivo informático se compone de dos partes: la raíz y la extensión. La raíz es el nombre principal que elegimos para identificar el archivo (ejemplos
), mientras que la extensión es un sufijo separado por un punto que indica el tipo de archivo y con qué programas se puede abrir. Por ejemplo, los archivos de texto suelen tener la extensión .txt
, las imágenes pueden ser .jpg
o .png
y las hojas de cálculo de Excel suelen ser .xlsx
. En el caso de los scripts de R, la extensión es .R
, lo que indica que el archivo contiene código en el lenguaje R y puede ser ejecutado dentro de RStudio o cualquier otro entorno compatible. Al guardar un archivo de código, se agrega automáticamente la extensión en el nombre y esto nos permite organizarlos adecuadamente y asegurarnos de que R los reconozca como archivos de código.
Si buscamos el archivo recién creado en el Explorador de archivos de Windows, puede que en su nombre no se vea la extensión. Windows, por defecto, oculta las extensiones de los archivos, pero es posible mostrarlas siguiendo estos pasos:
Habilitar esta opción es útil para evitar confusiones entre tipos de archivos. Dos archivos diferentes pueden tener en su nombre la misma raíz, pero tratarse de distintas cosas porque tienen diferente extensión.
A medida que seguimos editando nuestro script de código agregando nuevas instrucciones de programación, es conveniente guardar frecuentemente los cambios añadidos.
Escribir código en un script no lo ejecuta automáticamente. Para ejecutarlo, podemos:
Ctrl + Enter
(Windows/Linux) o Cmd + Enter
(Mac).Run
en la parte superior del editor.Si empleamos cualquiera de esas opciones sin tener líneas de código seleccionadas, se ejecutará una sola línea, aquella sobre la cual esté colocado el cursor.
En todo lenguaje de programación existe un carácter especial que, al ser colocado al comienzo de una línea de código, le indica al software que dicha línea no debe ser evaluada. Esto se utiliza para incluir comentarios, es decir, líneas escritas en español que ayudan a documentar lo que hace cada parte de nuestro programa. Los comentarios no afectan la ejecución del código y son fundamentales para hacer que nuestro trabajo sea comprensible para nosotros y otras personas. También sirven para marcar distintas partes del script. En R, los comentarios se escriben con el símbolo #
(Figura 2.6).
En los ejemplos anteriores hemos realizado algunas operaciones básicas, como sumas o multiplicaciones. Otros cálculos matemáticos requieren que usemos funciones. Por ejemplo, para calcular una raíz cuadrada debemos usar la función sqrt
(del inglés squared root):
sqrt(49)
[1] 7
Usamos funciones como sqrt
para pedirle a R que realice algún tipo de operación. Como resultado R nos devuelve cierta respuesta o información (“salida”).
Las funciones están representadas por su nombre, seguido por los paréntesis ()
. Dentro de los paréntesis se colocan las porciones de información que queremos compartir con la función, que reciben el nombre de argumentos o parámetros. Una función puede depender de uno o más argumentos. Si hay más de uno, se separan con comas.
Cuando usamos una función, generalmente se dice que la estamos llamando, invocando o corriendo. Por ejemplo, corremos la función log
con el argumento 100
. Esta función calcula, por defecto, el logaritmo natural:
log(100)
[1] 4.60517
En este caso 100
representa un valor numérico que se pasa como argumento a la función para que la misma opere. Algunas funciones predefinidas en R pueden trabajar con más de un argumento, en cuyo caso hay que enumerarlos dentro de los paréntesis, separados con comas. Por ejemplo, si en lugar de calcular el logaritmo natural (cuya base es la constante matemática \(e\)), queremos calcular un logaritmo en base 10, podemos hacer lo siguiente:
# Logaritmo de 100 en base 10
log(100, 10)
[1] 2
¿Cómo sabemos que la función log()
se puede usar de esa forma, con uno o dos argumentos, cambiando o no el valor de la base con respecto a la cual toma el logaritmo? Lo aprendemos al leer el manual de ayuda de R.
Toda función de R viene con un instructivo que detalla cómo se usa, qué argumentos incluye y otras aclaraciones. Lo encontramos en la pestaña de Ayuda (Help) en el panel de abajo a la derecha en RStudio. Otras formas de abrir la página de ayuda sobre una función es correr en la consola alguna de estas sentencias:
help(log)
?log
Esa página de ayuda tiene bastante información, porque reúne explicaciones sobre muchas funciones relacionadas con logaritmos y exponenciales, pero podemos detenernos en algunas partes más importantes (Figura 2.7).
En la sección Usage (“uso”) descubrimos que la función log()
puede usarse con dos argumentos: x
y base
. En la sección Arguments entendemos que x
es el número al cual le vamos a sacar el logaritmo y base
es la base con respecto a la cual se toma el logaritmo. Por eso, al correr log(100, 10)
, estamos calculando el logaritmo de x = 100
con base = 10
.
Vemos, además, una diferencia en la forma en que x
y base
aparecen en la descripción: log(x, base = exp(1))
. Cuando un argumento tiene un signo =
significa que tiene asignado un valor por defecto y que no es obligatorio usarlo. Por eso, cuando corremos log(100)
estamos calculando el logaritmo de x = 100
con la base elegida por R: base = exp(1)
, que es la forma que tiene R de nombrar a la constante \(e = 2.718282...\) (es el logaritmo natural). Si quiero cambiar la base, debo proveer un valor, por ejemplo, log(100, 10)
. Por el contrario, el argumento x
no tiene asignado un valor por default. Eso significa que obligatoriamente tenemos que proveer un valor para el mismo.
R también permite usar una función escribiendo los nombres de los argumentos, lo cual muchas veces es muy esclarecedor, en especial cuando las funciones llevan muchos argumentos:
log(x = 100, base = 10)
[1] 2
Si escribimos los nombres de los parámetros explícitamente como en el caso anterior, podemos cambiar su orden, sin alterar el resultado:
log(base = 10, x = 100)
[1] 2
Si no escribimos los nombres, el orden importa. R hace corresponder los valores provistos con los argumentos presentados en la ayuda sobre la función, uno por uno, en orden:
# Toma el logaritmo de x = 100 con base = 10
log(100, 10)
[1] 2
# Toma el logaritmo de x = 10 con base = 100
log(10, 100)
[1] 0.5
Presentamos los siguientes ejemplos a modo de resumen:
# Tres usos equivalentes de la función para obtener el
# logaritmo de x = 100 con base = 10:
log(100, 10)
[1] 2
log(x = 100, base = 10)
[1] 2
log(base = 10, x = 100)
[1] 2
# Si no indico la base, se toma el valor por defecto (logaritmo
# natural). Ambas expresiones son equivalentes:
log(100)
[1] 4.60517
log(x = 100)
[1] 4.60517
# Si no indico el argumento obligatorio x, obtengo un error:
log(base = 10)
Error: argument "x" is missing, with no default