Cap. 2 Introdución

Escribir en R, es como escribir en una calculadora. Puedes obtener resultados inmediatos al ejecutar la función (Enter).

Ten en cuenta que la sintaxis completa es el secreto de R. En otras palabras, si la función que escribes es incompleta, R se quedará esperando a que la completes y te aparece un “+” en la linea siguiente de tu comando.

2.1 Funciones Básicas en R

En R podemos ejecutar funciones básicas matemáticas de la siguiente manera.

43+7
## [1] 50
76-43
## [1] 33
345/6
## [1] 57.5
25*4
## [1] 100
(12 + 52) * 3
## [1] 192

2.2 Operaciones Básica en R

  • Paréntesis: ( , )
  • Exponente: ^ o **
  • División: /
  • Multiplicación: *
  • Suma: +
  • Resta: -

Así mismo a estos valores se les puede asignar un nombre, que lo denominamos un objeto. Para ello utilizaremos el símbolo “<-”. Por ejemplo:

2.3 Objetos y Vectores

Se utiliza para compilar una serie de información que es contenida como un objeto o vector, que puede ser una letra o palabra. Un objeto es lineal, mientras que un vector es dimensional

a<- 33
b <- 55

Significa que “a” es un objeto cuyo valor es 33, y b de 55.

d <- data.frame(a,b)
d
##    a  b
## 1 33 55

Entonces d es un vector (contiene dimensiones)

Cree un objeto denominado “y” cuyo valor sea igual a 5

y<-5

Cree un objeto denominado “z” cuya función sea la sumatoria de los objetos a + y

z<-a+y

El uso de “<-” es igual al símbolo “=” en donde mi función u objeto puedo escribirlo de la siguiente manera

z=a+y

Igualmente se puede construir otras funciones básicas como suma, resta, multiplicación, división y otras funciones más complejas que desarrollaremos más adelante.

Los objetos pueden denominarse con cualquier nombre y pueden construirse funciones más complejas.

variable1<- a+y/0.65

\(~\) \(~\)

Nota:

Nunca inicie un objeto con un número, dado que la sintaxis no le permitirá en R.

2.4 Listas

Una lista puede contener objetos de diferentes clases y tamaños, y se construye a través de la función “list()”

lista <- list(letras = letters[1:6], variables=rnorm(4))
lista
## $letras
## [1] "a" "b" "c" "d" "e" "f"
## 
## $variables
## [1] -1.797 -1.065  2.005  1.347
str(lista) #Verifica la estrutura de los datos
## List of 2
##  $ letras   : chr [1:6] "a" "b" "c" "d" ...
##  $ variables: num [1:4] -1.8 -1.06 2.01 1.35

2.4.1 Función Concatenar

Permite unir dos o más elementos diferentes pertenecientes a una misma variable. La función concatenar es indicada con la letra “c” en R.

c(0, 3, 6, 7, 9, 12)
## [1]  0  3  6  7  9 12

Un objeto puede contener una serie de valores

x<-c(1,2,3,4,5)
x
## [1] 1 2 3 4 5

Podemos obtener la cantidad de datos que contiene ese objeto

length(x)
## [1] 5

2.4.2 Función listar

Así mismo podemos listar los objetos que tenemos contenidos en R, a través de la función listar

ls()
## [1] "a"         "b"         "d"         "lista"    
## [5] "variable1" "x"         "y"         "z"

2.4.3 Remover objetos

También es posible remover todos los objetos creados en R

rm(list=ls())

Si está interesado en remover un único objeto.

rm(x)
## Warning in rm(x): object 'x' not found

2.5 Creando vectores

El uso de vectores nos facilitará en manejo de datos, cuando ellos están formados por una serie de datos. Para ello, utilizaremos la función “concatenar”.

vector1 <-c(1,2,3,4,5)
vector1
## [1] 1 2 3 4 5
vector2 <-c(6,7,8,9,10)
vector2
## [1]  6  7  8  9 10
numeros10al20 <- 10:20
numeros10al20
##  [1] 10 11 12 13 14 15 16 17 18 19 20
numerosdescendiente10al2 <- 10:2
numerosdescendiente10al2
## [1] 10  9  8  7  6  5  4  3  2

La desventaja de crear un conjunto de valores de esta manera es que no podremos llamarla cuando la necesitemos para un análisis posterior. Solo se ejecuta de forma inmediata.

m1 <- c(1, 2, 3, 4) + c(1, 2, 3, 4)
m2 <- c(1, 2, 3, 4) * c(1, 2, 3, 4)
m3 <- c(1, 2, 3, 4) / c(1, 2, 3, 4)
m4 <- c(1, 2, 3, 4) - c(1, 2, 3, 4)

2.6 Vectores y matrices

Se muestra las diferentes formas para generar matrices o ordenar datos. Analice con cuidado el re ordenamiento de cada función.

a <- array(c(1,2,3,4,5,6,7,8,9,10,11,12),dim=c(3,4)) #dim significa dimensionar
a
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12
b <- array(c(1,2,3,4,5,6,7,8,9,10,11,12),dim=c(3,8))
b
##      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
## [1,]    1    4    7   10    1    4    7   10
## [2,]    2    5    8   11    2    5    8   11
## [3,]    3    6    9   12    3    6    9   12
m <- matrix(c(23,53,23,5,65,32),2,3)
m
##      [,1] [,2] [,3]
## [1,]   23   23   65
## [2,]   53    5   32
m2 <- matrix(c(56,24,34,55,12,42,51,65,23,64),2,5)
m2
##      [,1] [,2] [,3] [,4] [,5]
## [1,]   56   34   12   51   23
## [2,]   24   55   42   65   64
m2*2
##      [,1] [,2] [,3] [,4] [,5]
## [1,]  112   68   24  102   46
## [2,]   48  110   84  130  128
m3 <- matrix(1 : 20, nrow = 5, ncol = 4)
m3
##      [,1] [,2] [,3] [,4]
## [1,]    1    6   11   16
## [2,]    2    7   12   17
## [3,]    3    8   13   18
## [4,]    4    9   14   19
## [5,]    5   10   15   20
m4 <- data.frame (grupoa = c(1, 1, 2, 3), grupob = c(21, 8, 13, 5))
m4
##   grupoa grupob
## 1      1     21
## 2      1      8
## 3      2     13
## 4      3      5
row.names(m4) <- LETTERS[1:4]  # puede escribir “letters” en minúscula también, observe la diferencia.

grupoA <- c(0.360, 0.160, 0.334, 0.146, 0.058, 0.044, 0.542)

grupoB <- c(3.66, 3.36, 3.26, 2.60, 2.15, 1.86, 0.435)

m5 <- data.frame(grupoA, grupoB)

m5
##   grupoA grupoB
## 1  0.360  3.660
## 2  0.160  3.360
## 3  0.334  3.260
## 4  0.146  2.600
## 5  0.058  2.150
## 6  0.044  1.860
## 7  0.542  0.435
sitioA<-c(5,7)

sitioB<-c(4,4)

m6<-data.frame(sitioA,sitioB)

rownames(m6)<-c("machos","hembras")
m6
##         sitioA sitioB
## machos       5      4
## hembras      7      4

2.7 Patrones simples para vectores

2.7.1 Crear una simple secuencia de números.

1:10
##  [1]  1  2  3  4  5  6  7  8  9 10
seq(1, 29, by=2)
##  [1]  1  3  5  7  9 11 13 15 17 19 21 23 25 27 29
seq(from = 1, to = 15, by = 2)
## [1]  1  3  5  7  9 11 13 15
seq(1,100,4)
##  [1]  1  5  9 13 17 21 25 29 33 37 41 45 49 53 57 61 65
## [18] 69 73 77 81 85 89 93 97
seq(10,by=4,length=15)
##  [1] 10 14 18 22 26 30 34 38 42 46 50 54 58 62 66

2.7.2 Repetir patrones, utilizando la función rep().

rep(4,9)
## [1] 4 4 4 4 4 4 4 4 4
rep(seq(2, 20, by=3), 2) #repite  la secuencia cada tres números, dos veces
##  [1]  2  5  8 11 14 17 20  2  5  8 11 14 17 20
rep(seq(2, 20, by=3), 2) #repite  la secuencia cada tres números, dos veces
##  [1]  2  5  8 11 14 17 20  2  5  8 11 14 17 20

Para realizar una función de vectores, debe de tener el cuidado de que ambos sean de la misma longitud.

a1<-c(1,2,3)

a2<-c(1,2)

a3<-a1+a2
## Warning in a1 + a2: longer object length is not a
## multiple of shorter object length

2.8 Práctica

Con el objetivo que se se siga familiarizado con la creación de objetos que contienen números, desarrollaremos ejemplos básicos para en mejor entendimiento de R.

Usaremos funciones propias de R, así como bases de datos para facilitar la creación de valores, como el uso de la función “rnorm”.

2.8.1 Función “rnorm”

Esta función permite crear datos aleatorios con una distribución normal.

2.8.2 Función “set.seed”

Permite establecer una semilla o parámetros en su computador, de tal manera que las respuestas serán siempre iguales cada vez que genere valores aleatorios. En caso de no aplicar el set.seed, se generarán siempre valores aleatorios con diferente respuesta.

\(~\) \(~\)

Nota:

El uso de “set.seed” es importante, para cuando usted quiera replicar o mantener los mismos datos, una vez utilizada la función de generación de números aleatorios.

\(~\) \(~\)

2.8.3 Genere 10 valores con una distribución normal.**

set.seed(12345)
rnorm(10)
##  [1]  0.5855  0.7095 -0.1093 -0.4535  0.6059 -1.8180
##  [7]  0.6301 -0.2762 -0.2842 -0.9193

Antes de continuar es importante que se familiarice con la ayuda que brinda R

2.9 Solicitando ayuda a R

#?rnorm
#Aprenda a leer los argumentos que brinda la ventana de ayuda

2.9.1 Genere un vector denominado “a”, que contenga 10 valores con una distribución normal, cuya media sea de 17, con una desviación estándar de 3.**

set.seed(12345)
a<-rnorm(10, 17, 3)

2.9.2 Genere un histograma del vector “a”. Ver figura **

hist(a)
Histograma de la variable a

Figura 2.1: Histograma de la variable a

2.9.3 Genere dos vectores aleatorios que contengan 10 valores cada uno, denominados “a” y “b”, cuyo vector “a” tenga una media de 35 y “b” de 42, con desviaciones estándares de 4 y 2.5 respectivamente. Proceda a unir las variables en un data.frame que se denomine “cuadro”.**

set.seed(12345)
a<-rnorm(10, mean=35, sd=4)
set.seed(12345)
b<-rnorm(10, mean=42, sd=25)
cuadro<-data.frame(a,b)
cuadro
##        a      b
## 1  37.34 56.638
## 2  37.84 59.737
## 3  34.56 39.267
## 4  33.19 30.663
## 5  37.42 57.147
## 6  27.73 -3.449
## 7  37.52 57.752
## 8  33.90 35.095
## 9  33.86 34.896
## 10 31.32 19.017

2.9.4 Genere un “Diagrama de cajas del vector”cuadro“. Ver figura **

boxplot(cuadro)
Diagrama de Cajas del vector cuadro

Figura 2.2: Diagrama de Cajas del vector cuadro

6. Visualice la base de datos contenida en R.

data()

Se mostrará una ventana, con los nombres de las bases de datos disponibles que usted pueda hacer uso para diversas situaciones. Si tiene paquetes activados, también se indicará a que conjunto de datos pertenecen.

2.9.5 Visualice la base de datos de airquality. Ver cuadro **

Cuadro 2.1: Visual de los primeros veinte datos de airquality
Ozone Solar.R Wind Temp Month Day
41 190 7.4 67 5 1
36 118 8.0 72 5 2
12 149 12.6 74 5 3
18 313 11.5 62 5 4
NA NA 14.3 56 5 5
28 NA 14.9 66 5 6
23 299 8.6 65 5 7
19 99 13.8 59 5 8
8 19 20.1 61 5 9
NA 194 8.6 69 5 10
7 NA 6.9 74 5 11
16 256 9.7 69 5 12
11 290 9.2 66 5 13
14 274 10.9 68 5 14
18 65 13.2 58 5 15
14 334 11.5 64 5 16
34 307 12.0 66 5 17
6 78 18.4 57 5 18
30 322 11.5 68 5 19
11 44 9.7 62 5 20

2.9.6 Extraer de la base de datos de airquality, la variable “Ozone”, y elaborar un diagrama de cajas, en color gris. Ver figura Ver figura **

boxplot(airquality$Ozone, col = "gray")
Diagrama de cajas para Ozone de los datos airquality

Figura 2.3: Diagrama de cajas para Ozone de los datos airquality

2.9.7 Calcular un resumen estadístico de la variable “Ozone”, contenida en la base de datos de airquality.**

summary(airquality$Ozone)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     1.0    18.0    31.5    42.1    63.2   168.0 
##    NA's 
##      37

Nota:

Como habrá visto hemos estado haciendo uso del símbolo $, que es útil para indicar a R, cuando una variable es contenida en.

2.9.8 Crear un vector que se llame, “variable”, que contenga los siguientes datos: 5,4,8,7,6,6,2,4,5,8,9,1,2,0,4,5.**

variable<-c(5,4,8,7,6,6,2,4,5,8,9,1,2,0,4,5)

Nota:

Observe que cuando una variable contiene un conjunto de datos, siempre deben de ir en forma concatenada, para ello se utiliza la letra “c()”.

\(~\) \(~\)

11. Genere un vector que se llame vector1 y que contenga los siguientes datos: 3,4,5,6,7,8.

vector1<-c(3,4,5,6,7,8)
vector1
## [1] 3 4 5 6 7 8

12. Genere un vector denominado “x”que sea de números continuos del 5 al 10.

x<-c(5:10)
x
## [1]  5  6  7  8  9 10

2.9.9 Crear una secuencia de datos que inicie en 5 y termine en 40, que sean cada 4, cuyo objeto se llame “y”.**

y<-seq(5,40, by=4)
y
## [1]  5  9 13 17 21 25 29 33 37

2.10 Principios básicos de la edición gráfica en R

Para facilitar la edición de gráficos, vamos a utilizar la función base de “plot”, a partir de ahí, es importante que usted entienda que los comandos pueden ser aplicados a cualquier tipo de gráfico, cuya sintaxis sea permitida en el gráfico utilizado. Figura

set.seed(12345)
datos<-rnorm(100,25,8)
plot(datos, main="Plot")
Plot de datos

Figura 2.4: Plot de datos

2.11 Parámetros gráficos

2.11.0.1 par(cex, cex.axis, cex.lab, cex.main, cex.sub)

Permite ajustar parámetros de trazado a sus gráficos.

Usted puede combinar las diferentes opciones para ajustar sus gráficos.

La función “main”, permite incluir un título principal a su gráfico. Figura

par(mfrow=c(2,2)) #permite particionar su ventana gráfica en 2 filas y 2 columnas.
plot(datos, cex=0.3, main="a")
plot(datos, cex=0.5, main="b")
plot(datos, cex=0.7, main="c")
plot(datos, cex=1, main="d")
Plot de datos y uso de *cex*

Figura 2.5: Plot de datos y uso de cex

El “cex.axis” se refiere a la ampliación de la anotación del eje relativa a cex. Sus valores varían de 0 a 1. Ver figura

#cex.axis permite modificar los ejes ("x" y "y") de su gráfica
par(mfrow=c(2,2)) 
plot(datos, main="a", cex=0.5, cex.axis=.3)
plot(datos, main="b", cex=0.5, cex.axis=.5)
plot(datos, main="c", cex=0.5, cex.axis=.7)
plot(datos, main="d", cex=0.5, cex.axis=1)
Plot de datos y uso para *cex.axis*

Figura 2.6: Plot de datos y uso para cex.axis

El “cex.axis” se refiere a la ampliación de las etiquetas “x” y “y” en relación con cex. Sus valores varían de 0 a 1. Ver figura

#cex.lab permite modificar las etiquetas de su gráfica
par(mfrow=c(2,2)) 
plot(datos, main="a", cex=0.5, cex.lab=.3)
plot(datos, main="b", cex=0.5, cex.lab=.5)
plot(datos, main="c", cex=0.5, cex.lab=.7)
plot(datos, main="d", cex=0.5, cex.lab=1)
Plot de datos y uso para *cex.lab*

Figura 2.7: Plot de datos y uso para cex.lab

El “cex.main” se refiere al aumento de títulos relativas a cex. Ver figura

#cex.main permite modificar títulos principales de su gráfica
par(mfrow=c(2,2)) 
plot(datos, main="a", cex=0.5, cex.main=.3)
plot(datos, main="b", cex=0.5, cex.main=.5)
plot(datos, main="c", cex=0.5, cex.main=.7)
plot(datos, main="d", cex=0.5, cex.main=1)
Plot de datos y uso para *cex.main*

Figura 2.8: Plot de datos y uso para cex.main

El “cex.sub” se refiere al aumento de subtítulos en relación a cex. Ver figura

#cex.sub permite modificar títulos principales de su gráfica
par(mfrow=c(2,2)) 
plot(datos, main="a", cex=0.5, sub= "subtiulo",cex.sub=.3)
plot(datos, main="b", cex=0.5, sub= "subtiulo",cex.main=.5)
plot(datos, main="c", cex=0.5, sub= "subtiulo", cex.main=.7)
plot(datos, main="d", cex=0.5, sub= "subtiulo",cex.main=1)
Plot de datos y uso para *cex.sub*

Figura 2.9: Plot de datos y uso para cex.sub

2.12 Inclusión de colores en las gráficas

Hay varias formas de incluir colores en los gráficos en R. La más sencilla, es escribir el color en inglés, a través del comando “col=”. Ver figura

par(mfrow=c(2,2)) 
plot(datos, main="a", col="blue")
plot(datos, main="b", col="red")
plot(datos, main="c", col="green")
plot(datos, main="d", col="gray")
Plot de datos y uso de colores

Figura 2.10: Plot de datos y uso de colores

La forma mas sencilla de desplegar todos los colores disponibles en R es utilizando el comando “colors()”.

head(colors(), 50) # Para desplazar únicamente 50 opciones de colores
##  [1] "white"          "aliceblue"      "antiquewhite"  
##  [4] "antiquewhite1"  "antiquewhite2"  "antiquewhite3" 
##  [7] "antiquewhite4"  "aquamarine"     "aquamarine1"   
## [10] "aquamarine2"    "aquamarine3"    "aquamarine4"   
## [13] "azure"          "azure1"         "azure2"        
## [16] "azure3"         "azure4"         "beige"         
## [19] "bisque"         "bisque1"        "bisque2"       
## [22] "bisque3"        "bisque4"        "black"         
## [25] "blanchedalmond" "blue"           "blue1"         
## [28] "blue2"          "blue3"          "blue4"         
## [31] "blueviolet"     "brown"          "brown1"        
## [34] "brown2"         "brown3"         "brown4"        
## [37] "burlywood"      "burlywood1"     "burlywood2"    
## [40] "burlywood3"     "burlywood4"     "cadetblue"     
## [43] "cadetblue1"     "cadetblue2"     "cadetblue3"    
## [46] "cadetblue4"     "chartreuse"     "chartreuse1"   
## [49] "chartreuse2"    "chartreuse3"

Otra forma fácil de obtener colores es utilizar las paletas html disponibles en la Internet. Puede utilizar las palabras clave en su navegador de Internet: “Códigos de Colores HTML”. Ver figura

Los colores html inician con el símbolo “#”. ejem. para el verde: #008000; el azul: #0000FF. etc.

par(mfrow=c(2,2)) 
plot(datos, main="a", col="#008000") #verde
plot(datos, main="b", col="#00FFFF") #agua
plot(datos, main="b", col="#008080") #verde azulado
plot(datos, main="d", col="#0000FF") #azul
Plot de datos y uso de colores html

Figura 2.11: Plot de datos y uso de colores html

2.13 Uso de simbolos “pch” y lineas (“lty y lwd”)

La opción “pch” en los gráficos es para especificar los símbolos que se usarán al trazar puntos. Ver figura

par(mfrow=c(2,2)) 
plot(datos, main="a", col="yellow4", col.main="red", col.lab="salmon", pch=1)
plot(datos, main="a", col="yellow4", col.main="red", col.lab="salmon", pch=7)
plot(datos, main="a", col="yellow4", col.main="red", col.lab="salmon", pch=10)
plot(datos, main="a", col="yellow4", col.main="red", col.lab="salmon", pch=19)
Plot de datos y uso de *pch*

Figura 2.12: Plot de datos y uso de pch

Las opciones de pch disponibles en R son: Ver figura

Plot de pch en R

Figura 2.13: Plot de pch en R

Los gráficos de lineas, requieren de dos vectores x y y. Ver figura

par(mfrow=c(2,2)) 
x <- c(1:10)
y <-c(12,13,15,16,17,18,19,20,23,25)
plot(x,y, type="l", lty=1, lwd=1, main = "a")
plot(x,y, type="l", lty=2, lwd=3, main = "b")
plot(x,y, type="l", lty=3, lwd=4, main = "c")
plot(x,y, type="l", lty=4, lwd=5, main = "d")
Plot de datos y uso de *lty* y *lwd*

Figura 2.14: Plot de datos y uso de lty y lwd

2.14 Atajos en R

R tiene una serie de atajos que pueden facilitar la escritura y ejecución de comando.

Para ver todas las opciones de atajos presiona “Alt+Shift+K”.

  • <- (Alt + -)
  • run (Ctrl + Enter), ejecuta la linea de comando activa o seleccionada desde la ventana del Rscripts.
  • Auto completar función a través de la ayuda (Ctrl + barra espaciadora), esto solo funciona cuando inicias a escribir un comando existente en R o en un paquete.
  • Buscar en el Rscripts (Ctrl + F)
  • Deshacer (Ctrl + z)
  • Rehacer (Ctrl + Shift + z)
  • Copiar (Ctrl + c)
  • Pegar (Ctrl + v)
  • Cortar (Ctrl + x)
  • Seleccionar todo (Ctrl + A)
  • Limpiar la consola (Ctrl + L)
  • Ampliar visual (Ctrl + +)
  • Reducir visual (Ctrl + -)
  • Abrir un documento (Ctrl + o)
  • Cerrar un documento (Ctrl + Shift + w)

Para ver más opciones de atajos en Rstudio visite el siguiente link