Tema 2 Primeros pasos
En este primer tema vamos a ver algunas utilidades generales del entorno R usando RStudio, tales como la ejecución de órdenes en la consola, la obtención de ayuda y la instalación y uso de paquetes.
2.1 Ejecución de órdenes en la consola
Para ejecutar órdenes en la consola teclea la expresión deseada y pulsa Enter.
Observa que la salida viene precedida por [1]. Para esta salida este valor no es muy útil, pero sí lo es cuando la salida produce un resultado que abarca varias líneas. Por ejemplo:
(1:40) ^ 2
## [1] 1 4 9 16 25 36 49 64 81 100 121 144 169 196 225
## [16] 256 289 324 361 400 441 484 529 576 625 676 729 784 841 900
## [31] 961 1024 1089 1156 1225 1296 1369 1444 1521 1600
Esto produce los números del 1 al 40 elevados al cuadrado. Cada línea viene precedida por el ordinal del primer valor de la línea en el conjunto de datos de salida. Por ejemplo, si una línea comienza con [14] eso indica que el primer valor en esa línea ocupa el puesto 14 de los valores que aparecen en la salida.
Cuando se escribe en la consola, se puede utilizar las flechas hacia arriba y abajo para recuperar las distintas órdenes tecleadas. Pruébalo, es realmente útil. También es cómodo usar la pestaña History del panel superior derecho para visualizar las órdenes tecleadas previamente. Si pinchamos en una orden aparece resaltada y se puede usar las opciones To Console o To Source para enviar la orden a la consola o al archivo de texto que estemos editando respectivamente. Pruébalo, a veces evita el tener que volver a teclear una orden larga escrita con anterioridad.
Observa que en la consola aparece el símbolo >. Este símbolo es el indicador o prompt. Indica que el sistema está listo para recibir órdenes. Teclea una orden incompleta como 7 *
y pulsa Enter. El indicador cambia al símbolo +. Este símbolo nos indica que la línea previa era incompleta y está esperando el final de la entrada. Escribe 5
, por ejemplo, y pulsa Enter, se obtendrá el valor 35
. Si cuando aparece el indicador + deseas abortar la orden que estabas escribiendo, en lugar de completarla, pulsa Escape.
2.2 Ayuda
Uno de los aspectos sobresalientes de R es su sistema de ayuda. Se puede pedir ayuda sobre cualquier función, paquete, instrucción, conjunto de datos, etc. Para ello hay que usar la función help
:
Si estamos en RStudio, la ayuda aparece en la pestaña Help del panel inferior derecho. Para obtener ayuda, también se puede usar la interrogación:
La ayuda sobre funciones incluye descripciones de sus parámetros de entrada y valor de retorno. La última parte de la ayuda (examples) es muy interesante, pues incluye ejemplos de uso de la función. Estos ejemplos se pueden ejecutar en la consola con la función example
:
A lo largo de estos apuntes vamos a estudiar muchas funciones de R. Normalmente describiremos los usos más comunes de una función. Sin embargo, hay funciones muy flexibles que realizan cálculos muy variados en función de cómo se las invoque. Por ello te animamos a que uses la ayuda para obtener una descripción completa de las funciones que te interesen. Prueba, por ejemplo, help("help")
para obtener una descripción más detallada del funcionamiento de la propia función help
.
Aparte de esta ayuda, y de la que se explica a continuación, una búsqueda en internet usando unos términos significativos, preferiblemente en inglés, suele producir ayuda de gran calidad en lugares como stackoverflow.
2.2.1 Vignettes
Los paquetes de R están obligados a incluir documentación sobre sus funciones y conjuntos de datos. Sin embargo, a veces es difícil entender la utilidad de un paquete viendo la documentación de sus funciones de forma aislada. Es por ello que algunos paquetes incluyen vignettes, que son documentos que explican en detalle la funcionalidad de un paquete combinando sus distintas funciones para, por ejemplo, resolver un problema. Un paquete puede contener varias vignettes. Para consultarlas desde la consola de R se puede usar la función vignette
.
Si ejecutas la orden previa desde la consola, se abrirá un archivo pdf con información sobre el sistema gráfico grid.
2.2.2 Demos
La tercera utilidad que nos ofrece R para aprender a usar sus recursos son las demostraciones, es decir, ejemplos prácticos en los que se muestran los resultados de utilizar ciertas funciones. Muchos paquetes incorporan demostraciones bastante elaboradas sobre su funcionalidad, especialmente los paquetes que sirven para generar gráficos.
Como ejemplo, ejecuta la siguiente orden en la consola y verás una demostración de las posibilidades gráficas de R (los gráficos aparecerán en la pestaña Plots del panel inferior derecho):
2.3 Paquetes
El núcleo base de R viene constituido por una serie de paquetes que se incluyen en la instalación de R. Este núcleo base incorpora un gran abanico de funcionalidades con las que podemos cargar datos de fuentes externas, llevar a cabo análisis estadísticos y obtener representaciones gráficas. Las funcionalidades de los paquetes del núcleo base están disponibles al ejecutar RStudio. No obstante, hay multitud de tareas para las que necesitaremos recurrir a paquetes externos al núcleo base, y necesitaremos incorporar al entorno de trabajo las funciones y objetos definidos en ellos. Algunos de esos paquetes ya se encontrarán instalados en el sistema, pero otros será preciso descargarlos e instalarlos conforme se vayan necesitando. Una de las grandes ventajas de R es la gran comunidad de programadores que desarrolla paquetes para compartirlos con el resto. Además, comparado con otros sistemas, la instalación de paquetes es muy sencilla.
Un paquete es un conjunto de funciones y datos listos para ser distribuidos e instalados. De cara a instalar un paquete hay varias posibilidades. Una de ellas es usar la pestaña Packages del panel inferior derecho. Mediante esta pestaña podemos consultar los paquetes que tenemos instalados, ver su documentación e instalar nuevos paquetes. Otra posibilidad es usar la función install_packages
. Por ejemplo, la siguiente orden instala el paquete tsfknn.
La función install_packages
descarga de Internet e instala un paquete de CRAN, que es el repositorio oficial de paquetes de R.
2.3.1 Carga de paquetes
Para poder usar un objeto (función, constante, conjunto de datos, …) de un paquete es necesario tener instalado el paquete; pero no sólo eso, también hay que cargar el paquete, para que los objetos que contiene sean accesibles. Podemos consultar los paquetes cargados con la función search
.
search()
## [1] ".GlobalEnv" "package:stats" "package:graphics"
## [4] "package:grDevices" "package:utils" "package:datasets"
## [7] "package:methods" "Autoloads" "package:base"
Para cargar un paquete y tener acceso a sus objetos hay que usar la función library
. Por ejemplo:
Ahora podemos usar las funciones del paquete tsfknn, que, dada una serie temporal, predice su comportamiento futuro.
Podemos comprobar que el paquete se ha cargado usando de nuevo la función search
:
search()
## [1] ".GlobalEnv" "package:tsfknn" "package:stats"
## [4] "package:graphics" "package:grDevices" "package:utils"
## [7] "package:datasets" "package:methods" "Autoloads"
## [10] "package:base"
Ahora el paquete tsfknn aparece en segundo lugar.
Como puede observarse, hay una serie de paquetes, como graphics, utils, stats o base, que no hemos cargado con library
y, sin embargo, están cargados. Estos se corresponden con los paquetes del núcleo base de R y se cargan automáticamente. Estos paquetes incluyen funciones básicas para realizar cálculos y análisis estadísticos.
2.3.2 Conflictos de nombres
A veces más de un paquete puede contener un objeto con el mismo nombre. Esto provoca un conflicto de nombres porque, cuando usamos un nombre definido en más de un paquete, ¿a qué objeto nos referimos?. R lo resuelve usando el objeto del último paquete que ha sido cargado, que será el primero de los paquetes en conflicto que aparezca en el listado producido por la función search
.
Vamos a ejemplificar un conflicto de nombres sin necesidad de usar dos paquetes. La función mean
, del paquete base
del núcleo de R, calcula la media de los valores de un vector:
Sin embargo, a continuación vamos a escribir una función llamada mean
que siempre produce el valor 5.
Ahora, esta nueva función oculta a la función original del paquete base
:
Cuando haya conflictos de nombres, siempre podemos usar la siguiente sintaxis para evitar el conflicto: nombrePaquete::objeto
. Es decir, precedemos el nombre del objeto con el nombre del paquete en el que se ubica y dos ocurrencias del carácter :. Esto evita cualquier conflicto, pues no puede haber dos paquetes con el mismo nombre.
mean(c(2, 7, 10)) # invoca a la función que hemos definido
## [1] 5
base::mean(c(2, 7, 10)) # invoca a la función mean del paquete base
## [1] 6.333333
La sintaxis nombrePaquete::objeto
también es útil para usar un objeto de un paquete sin necesidad de cargar previamente el paquete con library
.
2.4 Ejercicios
Usa la función
help
para descubrir la utilidad de la funciónsqrt
. Usasqrt
para realizar algún cálculo.Genera una vignette del paquete tsfknn.
Instala el paquete
dlstats
, que sirve para consultar estadísticas sobre las veces que los usuarios instalan determinados paquetes en RStudio. Carga el paquete y obtén ayuda de la funcióncran_stats
. Utiliza la funcióncran_stats
para consultar un histórico de cuántas veces al mes se ha descargado el paquete tsfknn.Ejecuta el código autoexplicativo de más abajo. El efecto es que la nueva variable oculta a la constante
pi
, definida en el paquetebase
. Añade una línea al final del código de forma que se pueda volver a consultar el valor de la constante \(\pi\).