Este tutorial está diseñado para realizar una introducción a R. ¿Por qué utilzar R? Es gratis, se ejecuta en variedad de plataformas (Windows, Unix, Mac), contiene métodos estadísticos avanzados.

Instalación de R

Ahora bien, ¿cómo descargar R?
1. Ve a la página https://www.rstudio.com/
2. Dale click al botón Download de RStudio
3. Escoje el instalador que te sirva (dependiendo de la plataforma que tengas).
4. Descargar

Al abrir R te aparecerá la siguiente pestaña:

En la imagen anterior se pueden reconocer 4 secciones; el script de R (ventana superior izquierda), la consola (ventana inferior izquierda), las variables de ambiente (ventana superior derecha) y los archivos y ayuda de R (ventana inferior derecha). En la consola es posible ejecutar código; realizar operaciones aritméticas, correr funciones y evaluar variables, sin embargo no es posible almacenar el código que se escribe en la consola, por esta razón se utiliza el script de R. En el script se escribe el código que se quiere almacenar para volver a ejecutar en el futuro. Las variables globales que sean definidas en el código aparecerán en las variables de ambiente a modo informativo y en la pestaña de ayuda de R se encontrará la información de paquetes, funciones y gráficas que sean generadas.

Asignación de variables

Ahora bien, empecemos por lo básico. Si corremos la siguiente línea de código le estamos asignando el valor de 1 a la variable “a”. El caracter # se utiliza para colocar comentarios, R no soporta comentarios multilinea, por eso debe colocar un # en cada línea que quiera comentar

a = 1 #Variable a

Puedes utilizar R como una calculadora por ejemplo queremos saber cuánto es (1526+378)/36. La respuesta aparecerá en la consola.

(1526+378)/36
## [1] 52.88889

Este mismo ejercicio también lo puedes hacer utilizando variables:

b = 1526
c = 378
d = 36
rta <- (b+c)/d
rta
## [1] 52.88889

Clases de objetos

En R existen 5 clases de objetos atómicos:

Por otro lado, también se pueden crear vectores, un vector en R continene múltiples objetos pero todos sus objetos deben ser de la misma clase. Para crear vectores en R utilizamos la función “c()” y le asignamos un nombre con la flecha “<-” (que es equivalente a utilizar el símbolo “=”), en este ejemplo nuestro vector contiene los números 1 y 5 y se llama vectorA.

vectorA <- c(1,5)

Para correr las líneas de código en R utilizamos “Ctrl+Enter” (En MAC “Cmd+Enter”) - “Ctrl + R” (En MAC “Cmd+R”). Cuando corras la línea de código verás que en la ventana de vectores globales aparece nuestro vectorA. También podemos crear vectores que no sean numéricos, por ejemplo; que sean de tipo Character.

vectorB <- c("Hola", "Bien","d")

Si se quiere inicializar un vector vacío para utilizar posteriormente se puede utilizar la función vector().

vectorVacio <- vector("logical", length = 10)

Para conocer la clase de los objetos que están dentro de un vector se puede utilizar la función class().

vectorDiverso <- c(1.4, 'dos', TRUE)
class(vectorDiverso)
## [1] "character"

Obtenemos que todos los objetos son de tipo Character, en este caso ocurrió una coerción implícita, R intenta representar todos los objetos del vector como una sola clase, en este caso la clase que se ajusta es Character. También se puede hacer coerción explícita; decirle a R cómo queremos que sean representados los objetos de un vector.

vectorExplicito <- 0:7
class(vectorDiverso)
## [1] "character"
#Si quiero que el vector sea representado como números reales
as.numeric(vectorExplicito)
## [1] 0 1 2 3 4 5 6 7
#Si quiero que el vector sea representado como números enteros
as.integer(vectorExplicito)
## [1] 0 1 2 3 4 5 6 7
#Si quiero que el vector sea representado como valores lógicos
as.logical(vectorExplicito)
## [1] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE

Paquetes en R

Los paquetes son librerias de código que han implementado otras personas y que nosotros podemos utilizar. Los paquetes son muy utiles porque nos ayudan a reducir la cantidad de cosas que debemos hacer al desarollar código. Por ejemplo, existen paquetes que ya implementan regresiones lineales, cuadráticas, cúbicas, cadenas de Markov, etc, así que si nosotros lo necesitamos solo debemos llamar el paquete y el código ya estará cargado. En R los paquetes deben ser instalados cuando estos no están presentes en el computador, y también se deben cargar en cada sesión de R, para eso se debe utilizar lo siguiente:

install.packages("nombre del Paquete")
library("nombre del Paquete")

Funciones

En la programación, se utilizan funciones para incorporar conjuntos de instrucciones que se desean utilizar repetidamente o que, debido a su complejidad, es mejor dividirlo en subproblemas. Una función es un código escrito diseñado para realizar una tarea específica. Este código puede recibir (o no) múltiples parámetros y devolver múltiples valores.
La estructura del código de las funciones se puede ver a continuación:

funcion1 <- function(arg1, arg2, ... ){
statements
return(object)
}

Hagamos un ejemplo, queremos crear una función a la que le entre por parámetro un número cualquiera y nos devuelva la raíz cúbica del número que ingresó por parámetro más 10. El código de la función tendrá la siguiente estructura:

funcion2 <- function(n){
  valor <- ((n)^(1/3)) + 10
  return(valor)
}

Ahora bien, ¿cómo hacemos para evaluar la función?

numero <- 4
funcion2(numero)
## [1] 11.5874

Las funciones no necesariamente deben retornar valores numéricos, por ejemplo en la siguiente función no se retornará nada y al llamarla se creará la gráfica.

funcion3 <- function(x){
  y <- seq(from=1, to = length(x), by = 1 )
  plot(y,x, type = "c", col = "red")
}
vector1 <- c(5,4,3,7,6,10)
funcion3(vector1)

Recorridos

Los cuerpos de las funciones pueden tener cualquier tipo de código, desde cálculos matemáticos básicos hasta recorridos. La estructura de los recorridos en R es la siguiente:

for(i in valor){
  statements
}

Queremos crear una función a la que le entre como parámetro dos vectores (de cualquier tamaño) y esta función me retorne un vector, donde cada posición del vector debe ser el máximo de las mismas posiciones entre los vectores parámetro.

funcion4 <- function(va,vb){
vectorResultado <- rep(0, times= length(va))  
  for(i in 1:length(va)){
    vectorResultado[i]=max(va[i],vb[i])
  }
return(vectorResultado)
}

v1 <- c(1,4,8,9,7,3)
v2 <- c(4,5,7,8,2,1)
funcion4(v1,v2)
## [1] 4 5 8 9 7 3

Estructuras de control

En R también podemos tener estructuras de control. Estas permiten controlar el flujo de ejecución de un script.

if (condition) {
    # do something
} else {
    # do something else
}

Por ejemplo:

x <- 4
if (x <= 10) {
    print("x es menor a 10")
} else {
    print("x es mayor a 10")
}
## [1] "x es menor a 10"

También podemos tener estructuras enlazadas:

x=10
 if(x>1 & x<7){
     print("x es un n?mero entre 1 y 7")
   }else if(x>8 & x< 15){
     print("x es un n?mero entre 8 y 15")
   }
## [1] "x es un n?mero entre 8 y 15"

Para cerrar daremos un último ejempo, crearemos una función que retornará TRUE si un número específico está dentro de un vector.

funcion5 <- function(vector,n){
  for(i in 1:length(vector)){
    if (vector[i] == n){
      return(TRUE)
      break
    }
  }
}
vectorEval <- c(3,4,6,75,14,13,17,65,89,9,7,12,4,46,346)
n <- 89
funcion5(vectorEval,n)
## [1] TRUE

Gráficas en R

Ahora bien, ¿qué pasa si quisieramos graficar algo muy sencillo? Supongamos que queremos graficar 2 vectores (uno en el eje X y otro en el eje Y). Primero, debemos crear los vectores:

vectorC <- c(1,3,4,8,7,4,2)
vectorD <- c(1,2,3,4,5,6,7)

Para crear la gráfica utilizamos la función “Plot”

grafica <- plot(vectorD,vectorC,type="l",col="blue")

Pero, ¿de dónde conocemos que debemos incluir “type=l” o “col=blue” en el comando de la gráfica? Para saber todas estas cosas podemos utilizar la ayuda de R. Para acceder a dicha ayuda utilizamos el comando “?” antes de la función de la que deseas pedir ayuda (“?plot”).

Ejercicios

  1. Cree la función Unico que dado un vector devolverá un nuevo vector con los elementos del primer vector con los elementos duplicados eliminados.
  2. Cree una función que, dado un vector y un número entero, devolverá cuántas veces el número entero aparece dentro del vector.