El lenguaje de programación R
R es una implementación de código abierto del lenguaje S, el cual fue
creado y desarrollado en los Laboratorios Bell (originalmente parte de
la corporación AT&T). R fue creado en 1991 por Ross Ihaka y Robert
Gentleman en el Departamento de Estadística de la Universidad de
Auckland, pero no se hizo público hasta 1993. En 1995, R se convirtió en
software libre al adoptar la Licencia Pública General GNU. Este cambio
fue trascendental, ya que permitió que el código fuente de R fuera
accesible para cualquiera que quisiera experimentarlo. Finalmente, en el
año 2000, se liberó la versión 1.0.0 de R al público.
Volver al inicio
Características principales
Actualmente, R funciona en casi cualquier plataforma y, al ser de
código abierto, permite que cualquiera adapte su código a otros
entornos. De hecho, R puede ejecutarse en algunas tabletas digitales,
teléfonos inteligentes y consolas de videojuegos. A lo largo del año, se
liberan frecuentemente versiones menores para solucionar problemas
identificados en el software, mientras que las actualizaciones mayores
suelen publicarse en el último trimestre del año, generalmente en
octubre.
Una característica clave de R es que su funcionalidad se extiende
mediante paquetes o librerías. Es decir, uno puede empezar a trabajar
con R únicamente con “lo básico” e ir incorporando paquetes según las
necesidades específicas de cada proyecto. El éxito de R se debe, en gran
medida, a su comunidad activa, que constantemente desarrolla y prueba
paquetes para ampliar la funcionalidad del lenguaje.
Sin embargo, ningún lenguaje de programación es perfecto, y R no es
la excepción. En términos generales, R está basado en una tecnología de
más de 50 años, ya que evolucionó a partir del lenguaje de programación
S. Por ejemplo, en sus inicios, R no tenía soporte para gráficos 3D.
Aunque las constantes contribuciones de la comunidad han permitido su
crecimiento, una limitación real es que la funcionalidad de R se
desarrolla “bajo demanda” y depende de contribuciones voluntarias. Esto
significa que, si no existe un paquete con una funcionalidad específica
para un proyecto, alguien tendrá que codificar la solución
(generalmente, el propio interesado). Otra limitación importante es el
uso de la memoria física. R suele consumir más memoria que otros
lenguajes de programación y paquetes estadísticos, ya que todos los
objetos deben almacenarse en la memoria, lo que dificulta el trabajo con
grandes volúmenes de datos.
Volver al inicio
Manuales oficiales e instalación
A continuación, se presenta una lista de recursos oficiales generados
por Comprehensive R Archive Network (CRAN) sobre el lenguaje de
programación R. CRAN es una red de servidores FTP y web en todo el mundo
que almacena versiones idénticas y actualizadas del código y
documentación de R. Dado que se trata de documentación oficial, está
disponible en inglés:
Las instrucciones de instalación varían según el sistema operativo
donde se ejecutará R. Se pueden consultar en los siguientes enlaces (en
inglés):
Aunque es posible trabajar directamente con R, se recomienda instalar
RStudio, un entorno de desarrollo integrado (IDE) que enriquece la
experiencia de trabajo con R. RStudio está disponible para distintos
sistemas operativos y se distribuye en cinco versiones. Para este curso,
se debe instalar RStudio Desktop, que es de código abierto.
Si la instalación de R y RStudio no es una opción viable (por
restricciones de permisos, por ejemplo), se puede utilizar Posit Cloud, una
alternativa basada en la nube.
Volver al inicio
Cómo obtener ayuda
La comunidad de R es muy activa y que contínuamente se agrega
funcionalidad al sistema. Por esta razón, parece imposible conocer todas
las funciones disponibles sin tener algún punto de referencia.
En R, la ayuda se solicita mediante el signo de interrogación
(?), de la siquiente manera:
- Si se utiliza un signo de interrogación antes del nombre de una
función se solicita información específica de la misma. Por ejemplo, al
ejecutar
?nchar se muestra en pantalla la información sobre
dicha función (parte inferior derecha, en la pestaña “Help”).
- Si se utilizan dos signos de interrogación antes del nombre de la
función se solicita a R una búsqueda general en todos el sistema y que
devuelva cualquier elemento que podría estar relacionado con la función
sobre la que se pide ayuda. Por ejemplo, al ejecutar
??nchar se muestra en pantalla información sobre algunas
funciones que podrían estar relacioandas a nuestra consulta (parte
inferior derecha, en la pestaña “Help”).
Veamos con un poco más de detalle la información que devuelve la
ayuda de una función. Por ejemplo, solicitaremos ayuda sobre la función
paste (que concatena elementos). Par solicitar ayuda,
ejecuta la instrucción ?paste.
Si el comando se ejecutó correctamente, deberías ver en la parte
inferior derecha de tu pantalla un documento cuyo encabezado se ve
similar al que se muestra a continuación:
Archivo de ayuda de la función paste
Aunque el documento de ayuda es extenso y contiene una gran cantidad
de elementos, en este momento nos enfocaremos en cuatro de ellos:
- A. La parte superior del documento indica el nombre
de la función y el paquete en el que se encuentra (en este caso, la
función se llama
paste y se ubica en el paquete
base. Más adelante daremos más detalles sobre los paquetes,
pero en este momento podemos adelantar que el paquete base es el que se
carga por defecto al iniciar una sesión de R, por lo que las funciones
definidas dentro del mismo, siempre están disponibles para su uso.
- B. La decripción de la función, que contiene un
texto breve donde se indica qué hace la función.
- C. El uso de la función presenta cómo debería
usarse la función (o algunas funciones relacionadas). Por ejemplo, los
puntos suspensivos indican una cantidad indefinida de parámetros, pero
los dos últimos parámetros corresponden a
sep y
collapse (y tienen valores por defecto, por lo que son
parámetros opcionales).
- D. El detalle de los argumentos. Es aquí donde se
muetra la informción específica del efecto de los argumentos en el
comportamiento de la función. Por ejemplo, vemos que los primeros
argumentos serán objetos de R que van a concatenarse, que
sep es la cadena de caracteres que se usará como separador
entre los objetos concatenados y que collapse es una cadena
opcional para separar los resultados.
Ahora, veamos las diferentes formas en las que podemos utilizar la
función paste, con base en lo que nos mostró la ayuda.
# Llama la función paste con los argumentos 'Hola' y 'mundo!'. Observa que no se asignan valores a los argumentos opcionales 'sep' y 'collapse', por lo que se usarán sus valores por defecto.
paste('Hola', 'Mundo!')
## [1] "Hola Mundo!"
# Llama la función paste con los argumentos 'Hola' y 'mundo!'. Observa que se asigna un valor al argumento opcional 'sep' (el separador será un guión) y no se asigna un valor al argumento opcional 'collapse', por lo que se usará su valor por defecto. En este ejemplo, R sabe que nos referimos al argumento sep debido al orden de los argumentos.
paste('Hola', 'Mundo!', "-")
## [1] "Hola Mundo! -"
# Llama la función paste con los argumentos 'Hola' y 'mundo!'. Observa que se asigna un valor al argumento opcional sep (el separador será un guión) y no se asigna un valor al argumento opcional 'collapse', por lo que se usará su valor por defecto. En este ejemplo, R sabe que nos referimos al argumento sep debido a que explícitamente indicamos a qué argumento se le asgna el valor.
paste('Hola', 'Mundo!', sep = "-")
## [1] "Hola-Mundo!"
Volver al inicio
Paquetes
La funcionalidad de R se construye con base en paquetes. Los paquetes
definen conjuntos de funciones, las cuales pueden ser utilizadas por los
usuarios según sea el caso. Los paquetes se instalan y cargan según las
necesidades de cada usuario, por lo que cada vez que se inicia una
sesión de R, sólo las funciones definidas en el paquete
base se cargan de forma automática.
Por ejemplo, vamos a instalar y a utilizar un paquete de contiene
algunas implementaciones de juegos en R. El paquete se llama
fun y lo instalaremos en el sistema mediante la
instrucción:
install.package('fun')
Es importante observar los mensajes que nos regresa la función
install.package de forma que podamos verificar que,
efectivamente, el paquete ha sido instalado. La instalación de paquetes
se realiza sólo una vez por paquete (la primera vez que se va a
usar).
Una vez que el paquete está instalado en el sistema, debemos cargarlo
en memoria. Este proceso debe realizarse una vez por sesión en R. En
otras palabras, cada vez que se inicia R Studio Desktop y que pensamos
usar alguna de las funciones definidas en el paquete. Para cargar el
paquete en memoria debemos usar:
library(fun)
Si por alguna razón obtenemos un mensaje de error como:
Error in library(fun) : there is no package called ‘fun’,
esto significa que el paquete no se instaló correctamente en el paso
anterior. Las razones por las que la instalación de un pauqete puede
fallar son diversas, pero entre las más comúnes está el escribir mal el
nombre del paquete o la incompatibilidad de versiones.
Una vez que sabemos que el paquete se ha cargado en memoria de forma
exitosa, invocaremos el juego del busca minas. Por favor, si tu sistema
operativo es Mac Os o Linux, ejecuta primero la siguiente instrucción
(no aplica para usuarios de Windows):
X11(type = 'Xlib')
Ahora, iniciemos el juego con el comando:
mine_sweeper(width = 5, height = 5)
¡Diviértete!
Volver al inicio