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)
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)
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 **
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")
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")
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")
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)
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)
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)
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)
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")
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
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)
Las opciones de pch disponibles en R son: Ver figura
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")
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