Introducción al uso de R
Introducción
R es un lenguaje y entorno de programación para análisis estadístico y gráfico (Ihaka and Gentleman 1996), creado en 1993 por el Departamento de Estadística de la Universidad de Auckland. Al ser un proyecto de software libre, licencia GNU-GPL, se ha convertido en uno de los lenguajes más utilizados en investigación científica.
Debido a la inclusión de bibliotecas específicas, el uso de R se ha extendido en campos especializados del conocimiento. Entre sus ventajas destaca la integración de funciones provenientes de diversas aplicaciones en un solo entorno, y la incorporación de alternativas a soluciones comerciales.
Esta guía tiene como objetivo proporcionar a los alumnos las herramientas básicas para la utilización de R. Todos los detalles se pueden encontrar en el manual desarrollado por(Team 2010).
Instalación de R y RStudio
La versión base de R trabaja mediante la utilización de comandos ingresados en una consola. Con objetivo de incorporar una interfaz más amigable y funcional, se ha diseñado un IDE denominado RStudio. Éste establece un entorno de trabajo similar al utilizado por Matlab (MATrix LABoratory).
Instalación de R base en Windows
- Vaya a esta dirección y seleccione el vínculo “Download R for Windows.”
- Diríjase a “Download R for Windows” y haga click el vínculo “base.”
- Seleccione la opción “Download R 3.X.X for Windows,” descargue e instale siguiendo las instrucciones que aparecerán en pantalla.
Instalación de R base en Ubuntu
- sudo add-apt-repository "deb http://cran.rstudio.com/bin/linux/ubuntu $(lsb_release -cs)/"
- sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys E084DAB9
- sudo apt-get update
- sudo apt-get install r-base r-base-dev
Instalación de RStudio
- Diríjase a esta dirección.
- Seleccione la última versión disponible de “RStudio Desktop” según su sistema operativo, descargue y siga las instrucciones que aparecerán en pantalla.
Entorno de trabajo en RStudio
RStudio ofrece un entorno de trabajo como el mostrado en la Figura 1.
El menú con las principales opciones se encuentra en la zona superior (A). Tareas como la inclusión de código, diseño de funciones, secuencias de comandos y archivos de texto se efectúan en la ventana superior izquierda (B). La consola de comandos, que es equivalente al entorno visual de R base, corresponde a la ventana inferior izquierda (C).
Las ventanas del lado derecho efectúan labores de apoyo. La superior (D) permite acceder las variables, el historial o en ambiente de trabajo, mientras que la inferior (E) efectúa diferentes tareas como: administración del directorio de trabajo, archivos, acceso a ayuda, gestionar las bibliotecas y efectuar tareas de visualización.
Figura 1. Entorno de trabajo - RStudio
Introducción al uso de R
Esta sección entrega las herramientas básicas para el uso de R a lo largo del curso.
Definición de carpeta de trabajo
La carpeta de un proyecto se definir usando en la consola (Figura 1, C) el comando setwd(). También se puede hacer seleccionado la ubicación de la carpeta en la ventana inferior derecha (Figura 1, E), accediendo a la opción “MORE” y seleccionando la opción “SET AS WORKING DIRECTORY.”
setwd(getwd()) #getwd() se puede modificar por la raíz que queremos usar como carpeta del proyecto
Ayuda
Para acceder a la ayuda asociada una instrucción escriba en la consola el comando help o ?. Los resultados se verán en la ventana inferior derecha (Figura 1, D) de RStudio y/o en su explorador de referencia. Para limpiar la consola de trabajo (C) utilice CRTL+L.
help("?") #Ayuda sobre la ayuda
# Ayuda sobre la función de raíz cuadrada ?sqrt
Asignación de variables
A una variable se le puede asignar un valor empleando el símbolo = o <-. Ejemplo:
= 5
variable <- 5
variable =TRUE
variable="Este es un texto" variable
Mostrar un mensaje en la consola
Para mostrar un resultados, texto o cualquier contenido asociado a una variable se puede usar los comandos print o cat. Por ejemplo:
= 5
variable print(variable)
## [1] 5
print("Mostrando un mensaje en la consola")
## [1] "Mostrando un mensaje en la consola"
cat("\nEste mensaje incluye un espacio al comenzar")
##
## Este mensaje incluye un espacio al comenzar
cat("\t Este mensaje incluye una tabulación al comenzar")
## Este mensaje incluye una tabulación al comenzar
cat(paste("El valor de variable es:",variable))
## El valor de variable es: 5
Comentarios
Los comentarios se efectúan empleando el símbolo #.
# Este es un comentario
= 5 #Este también es un comentario variable
Descarga y uso de bibliotecas
R dispone de muchas funcionalidades que no se encuentran originalmente en su versión base, pero que sí puedes ser usadas desde diferentes bibliotecas complementarias. Para instalar una biblioteca es necesario utilizar el comando install.packages("biblioteca"). Por ejemplo, si se desea instalar la biblioteca para gráficos avanzados denominado ggplot2, se debe utilizar el siguiente comando (quite el símbolo de comentarios).
install.packages("ggplot2")
library("ggplot")
Operaciones matemáticas
Las siguientes ejemplos muestran diferentes operaciones matemáticas:
=180
v1=50 v2
- Suma
= v1 + v2
suma suma
## [1] 230
- Multiplicación
= v1 * v2
multiplicacion multiplicacion
## [1] 9000
- División
= v1/v2
division division
## [1] 3.6
- Logaritmo base 10
=log10(v1)
vlog10 vlog10
## [1] 2.255273
- Raíz cuadrada
=sqrt(v1)
raiz raiz
## [1] 13.41641
- Seno de 180 en radianes
=sin(v1)
sinrad sinrad
## [1] -0.8011526
- Seno de 180 en grados
=sin(v1*pi/180)
singrad singrad
## [1] 1.224606e-16
- Aproximación de números
=round(sinrad,2)
aproximar aproximar
## [1] -0.8
Desafío 1
Realice otros 10 ejemplos con diferentes operadores matemáticos.
Estructuras de datos
Vectores
Los vectores permiten agrupar elementos de un mismo tipo. Para crearlos se debe utilizar la función combinar c(). Por ejemplo:
= c(2, 4, 6, 8, 10)
vector vector
## [1] 2 4 6 8 10
Puede acceder a los elementos de cada vector utilizando un índice [i].
5]=12
vector[ vector
## [1] 2 4 6 8 12
Matrices
Una matriz puede ser creada utilizando la función matrix o c. Empleando ncol y nrow es posible definir el número de filas y columnas. Ejemplo:
=matrix(c(6.2,3.4,5.1,7.2,5.3,50.3,33.2,45.3,60.3,47.8),nrow=5,ncol=2)
datos datos
## [,1] [,2]
## [1,] 6.2 50.3
## [2,] 3.4 33.2
## [3,] 5.1 45.3
## [4,] 7.2 60.3
## [5,] 5.3 47.8
Se puede asignar nombres a filas y columnas utilizando los comandos colnames y rownames.
colnames(datos)=c("peso(Kg)","talla(cm)")
rownames(datos)=c("SLOBODAN","ADOLF","KIM","FIDEL","AUGUSTO")
datos
## peso(Kg) talla(cm)
## SLOBODAN 6.2 50.3
## ADOLF 3.4 33.2
## KIM 5.1 45.3
## FIDEL 7.2 60.3
## AUGUSTO 5.3 47.8
Para efectuar operaciones matriciales dispone de varias sentencias, por ejemplo:
=matrix(c(6.2,3.4,5.1,7.2,5.3,50.3,33.2,45.3,60.3),nrow=3,ncol=3)
datosprint(datos) #Permite visualizar la matriz
## [,1] [,2] [,3]
## [1,] 6.2 7.2 33.2
## [2,] 3.4 5.3 45.3
## [3,] 5.1 50.3 60.3
t(datos) #Genera la matriz transpuesta
## [,1] [,2] [,3]
## [1,] 6.2 3.4 5.1
## [2,] 7.2 5.3 50.3
## [3,] 33.2 45.3 60.3
*datos #Corresponde a la multiplicación elemento por elemento datos
## [,1] [,2] [,3]
## [1,] 38.44 51.84 1102.24
## [2,] 11.56 28.09 2052.09
## [3,] 26.01 2530.09 3636.09
%*%(datos) #Corresponde a multiplicación matricial datos
## [,1] [,2] [,3]
## [1,] 232.24 1752.76 2533.96
## [2,] 270.13 2331.16 3084.56
## [3,] 510.17 3336.40 6084.00
det(datos) #Calcula el determinante
## [1] -7178.06
solve(datos) #Calcula la matriz inversa
## [,1] [,2] [,3]
## [1,] 0.272914966 -0.17216351 -0.020924874
## [2,] -0.003623542 -0.02849516 0.023401866
## [3,] -0.020059738 0.03833069 -0.001167446
diag(datos) #Calcula la diagonal de la matriz
## [1] 6.2 5.3 60.3
Listas
Las listas permiten agrupar elementos de diversas características. Para utilizarlas se debe emplear la función list.
= list(nombre="diplodocus", genero="Saurópodos diplocínidos",
lista antiguedad="150 Millones de años", largo_m=c(31.0, 36.5, 35.0, 20, 40))
Para acceder a los atributo de una lista utilice el comando attributes.
attributes(lista)
## $names
## [1] "nombre" "genero" "antiguedad" "largo_m"
También puede acceder o modificar los valores de una lista utilizando el símbolo $.
$nombre = "Brachiosaurus";
lista$genero="Saurópodos braquiosáuridos"
lista$largo_m[c(1,2,3,4,5)] = 25
lista lista
## $nombre
## [1] "Brachiosaurus"
##
## $genero
## [1] "Saurópodos braquiosáuridos"
##
## $antiguedad
## [1] "150 Millones de años"
##
## $largo_m
## [1] 25 25 25 25 25
Data frames
Es posible la creación de tablas usando una estructura llamada data.frame. A modo de ejemplo, la siguiente tabla describe si algunas marcas de cereales en nuestro país contienen ingredientes transgénicos (Revista el Punto Final 2004).
=c("BIOCENTURY","EL-GRANERO-INTEGRAL","GRANOVITA","PAGESA",
marcas"INTEGRAL-ESPIGAS","PASCUAL","SOJIVIT","HIPP","NUTREXPA",
"NESTLÉ","KELLOGGS")
=c("Bicentury","Todos","Todos","Diet_Rádisson","Todos",
productos"Pascual/Essential/MásVital/ViveSoy","Todos","Todos","Cola-Cao",
"Chocapic/Fitness/Fibre1/Estrellitas/Golden-Grahams/Crunch/Cheerios"
"Todos")
,
=c("NO","NO","NO","NO","NO","NO","NO","NO","NO","SI","SI");
trans
= data.frame(marcas=marcas,produtos=productos,transgenicos=trans)
cereales
head(cereales)
## marcas produtos transgenicos
## 1 BIOCENTURY Bicentury NO
## 2 EL-GRANERO-INTEGRAL Todos NO
## 3 GRANOVITA Todos NO
## 4 PAGESA Diet_Rádisson NO
## 5 INTEGRAL-ESPIGAS Todos NO
## 6 PASCUAL Pascual/Essential/MásVital/ViveSoy NO
Este tipo de datos se puede almacenar en formato de texto con extensión .csv o .xls. Para ello se puede utilizar el comando write.table, donde el parámetro row.names= FALSE omite el uso de índices, quote evita que los números sean guardados en formato de texto, dec señala que el punto decimal será una coma y sep establece ; como carácter de separación.
write.table(cereales,"cereales.csv", row.names = FALSE , quote = FALSE, dec = ",", sep = ";",fileEncoding = "latin1")
- Para leer archivos *.csv se utiliza la función read.table.
=read.table("cereales.csv", header = TRUE, sep = ";") nueva_tabla
- Es posible guardar variables en formato .rda o .rdata utilizando la función saveRDS.
saveRDS(cereales, file = "cereales.Rdata")
- Para leer un archivo de estas características se utiliza la función readRDS.
= readRDS("cereales.Rdata") rep_tabla
Desafío 2
Realice ejemplos usando otros tipos de estructura de datos: elementos booleanos, factores, tablas, entre otros.
Estructuras de control
Sentencia IF/ELSE
Se utiliza para comprobar una condición. Si ésta última es verdadera entonces se ejecuta determinada sentencia. En caso contrario, else, se realizará una sentencia diferente. Ejemplo:
=sample(1:9,1) #Crea un entero aleatorio entre 1 y 9
mfARIif (mfARI>=5) {
print("El paciente tiene una autorregulación cerebral normal")
else {
} print("El paciente tiene una autorregulación cerebral dañada")
}
## [1] "El paciente tiene una autorregulación cerebral normal"
Sentencia FOR
Implementa un bucle repitiendo un grupo de sentencias un número determinado de veces. Ejemplo:
for(i in 1:6) {print(i)}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
Sentencia WHILE
Permite ejecutar repetidamente un bloque mientras una condición sea verdadera. Ejemplo:
=1
iwhile(i<=6){
print(i)
=i+1} i
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
Funciones
La capacidad de crear funciones propias es fundamental para estudios futuros y la optimización de código. Una función en R se define de la siguiente manera: nombre=function{arg1,arg2,…}{expresion}
Cree un nuevo script usando FILE->NEW FILE->R-SCRIPT (CONTROL+SHIFT+N). Desarrolle una función como la definida en el siguiente ejemplo y posteriormente guarde el archivo con el nombre sumar_num.R.
#Definición de función
=function(x,y) {
sumar_num=x+y
resultadoreturn(resultado)}
A continuación se utilizará la consola de R/RStudio. Una buena práctica antes de cargar su script es la de eliminar las variables usadas anteriormente que no son de utilidad. El comando “ls()” permite chequear la tarea anterior.
rm(list=ls(all=TRUE))
ls()
## character(0)
Posteriormente, si trabaja en RStudio puede cargar su función seleccionando en el menú FILE->OPEN FILE. Seleccione su archivo.R y en la ventana correspondiente presione RE-RUN (CRTL+SHFT+P). Si desea utilizar la consola de R base (también de RStudio) utilice la siguiente sentencia:
source("sumar_num.R") #Revisar que el archivo se encuentre en la carpeta de trabajo
- La función sumar_num debe aparecer en la ventana de apoyo superior derecha (D). Puede revisar utilizando el comando ls().
ls()
## [1] "sumar_num"
- Pruebe su función con distintas entradas como los ejemplos mostrados a continuación:
#Prueba de función
=sumar_num(4,3)
res_sum res_sum
## [1] 7
=sumar_num(c(2,3),c(3,8))
res_sum2 res_sum2
## [1] 5 11
=sumar_num(matrix(c(1,1,1,1),nrow=2,ncol=2),matrix(c(2,2,2,2),nrow=2,ncol=2))
res_sum3 res_sum3
## [,1] [,2]
## [1,] 3 3
## [2,] 3 3
Desafío 3
Construya una función que permita a un jugador jugar al piedra papel o tijeras.
Desafío 4
Documente los desafíos 1-3 en un documento creado usando R-RStudio y el lenguaje Markdown.