3.1 Vectores
3.1.1 Tipo de vectores
En R existen tres clases principales de vectores y se crean con la función combine c()
.
- Numérico
num_vec <- c(-1, 2.5, 3, 4, 5.1)
- Caracter
cha_vec <- c("Mon", "Tue", "Wed", "Thu", "Sat", "Sun")
- Lógico
boo_vec <- c(TRUE, FALSE, FALSE, TRUE, TRUE, FALSE)
<-
.
La función class()
nos dice cuál es la clase o tipo del vector.
class(num_vec)
## [1] "numeric"
Otra función importante es length()
que nos dice cuál es la longitud del vector.
length(num_vec)
## [1] 5
Ej: Ganancias - Ruleta y poker
Mis ganancias de poker por día de la semana son:
poker_gan <- c(150, 178, -6, 166, -80, -119, -142)
print(poker_gan)
## [1] 150 178 -6 166 -80 -119 -142
Mis ganancias en ruleta son:
- lunes -48
- martes 151
- miércoles 198
- jueves -16
- viernes 134
- sábado -153
- domingo 126
Usando la función combine c()
asigna las ganancias por día al vector ruleta_gan
.
ruleta_gan <- c()
print(ruleta_gan)
3.1.2 Nombres de vectores
La función names()
nos permite nombrar los elementos de cada vector.
Por ejemplo, a cada elemento de las ganancias de poker del ejercicio anterior, asignaremos el nombre del día de la semana en que se obtuvieron.
dias <- c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
names(poker_gan) <- dias
print(poker_gan)
## Mon Tue Wed Thu Fri Sat Sun
## 150 178 -6 166 -80 -119 -142
Ej: Días - Ruleta y poker.
Asigna los nombres del día de la semana a cada elemento del vector de las ganancias de ruleta.
names(ruleta_gan) <-
print(ruleta_gan)
3.1.3 Selección de elementos en vectores
La selección de elementos de un vector se realiza indicando las posiciones a seleccionar entre [ ]
.
Estas posiciones pueden indicarse por medio de un vector numérico o de caracteres si los elementos del vector están nombrados.
- Vector numérico:
poker_gan[ c(1, 5) ]
## Mon Fri
## 150 -80
La función seq()
o el uso de dos puntos :
permiten crear un vector de secuencias numéricas:
poker_gan[ 1:3 ]
## Mon Tue Wed
## 150 178 -6
poker_gan[ seq(from = 7, to = 5) ]
## Sun Sat Fri
## -142 -119 -80
- Nombres:
poker_gan[ c("Mon", "Tue")]
## Mon Tue
## 150 178
Ej: Miercoles - Ruleta y poker.
Extrae las ganancias de ambos juegos del día miercoles y calcula la ganancia total de ese día.
wed_gan <- poker_gan[ ] + ruleta_gan[]
print(wed_gan)
3.1.4 ¿Qué pasa si sumamos los días de fin de semana?
Seleccionamos únicamente los días de fin de semana para ambos juegos.
poker_fin <- poker_gan[ dias[5:7] ]
poker_fin
## Fri Sat Sun
## -80 -119 -142
ruleta_fin <- ruleta_gan[ 5:7 ]
ruleta_fin
## Fri Sat Sun
## 134 -153 126
¿Qué pasa cuando sumo los vectores?
poker_fin + ruleta_fin
## Fri Sat Sun
## 54 -272 -16
Element wise:
En R para cualquier operación (+, -, *, /
) de vectores, las operaciones son elemento a elemento (element wise).
Por ejemplo, al sumar vectores:
la primera posición del primer vector se suma con la primera posicion del segundo vector,
la segunda posición del primer vector se suma con la segunda posicion del segundo vector
Ej: Diario - Ruleta y poker.
Calcula las ganancias diarias y asígnalas al objeto diario_gan
. ¿Qué día se gana más y qué día se pierde más?
diario_gan <-
Usando el vector diario_gan
y la función sum()
calcula las ganancias totales de la semana.
sum(diario_gan)
¿Me conviene seguir jugando?
## Mon Tue Wed Thu Fri Sat Sun
## 102 329 192 150 54 -272 -16
3.1.5 Comparación de elementos
La comparación de elementos se realiza con los siguientes comandos:
>
mayor a>=
mayor o igual<
menor a<=
menor o igual a==
igual a!=
distinto de%in%
contenido en
Este tipo de operaciones regresan un vector lógico dependiendo si la condición se cumple o no.
poker_gan
## Mon Tue Wed Thu Fri Sat Sun
## 150 178 -6 166 -80 -119 -142
poker_pos <- poker_gan >= 0
print(poker_pos)
## Mon Tue Wed Thu Fri Sat Sun
## TRUE TRUE FALSE TRUE FALSE FALSE FALSE
Este vector lógico también nos ayuda a seleccionar los elementos del vector que cumplen la condición.
poker_gan[poker_pos]
## Mon Tue Thu
## 150 178 166
El comando %in%
regresa un vector lógico si los elementos indicados están contenidos en el vector.
ciudades <- c("Aguascalientes", "Aguascalientes",
"Monterrey", "Monterrey",
"Guadalajara",
"Mexico", "Mexico")
ciudades_cond <- ciudades %in% c("Mexico", "Monterrey")
ciudades_cond
## [1] FALSE FALSE TRUE TRUE FALSE TRUE TRUE
sum(ciudades_cond)
## [1] 4
Otra función importante es la función which()
, que regresa las posiciones numéricas del vector en las que se cumple la condición:
ciudades_pos <- which(ciudades_cond)
ciudades_pos
## [1] 3 4 6 7
ciudades[ciudades_pos]
## [1] "Monterrey" "Monterrey" "Mexico" "Mexico"
3.1.6 Gráfica de vectores
En R existe la función plot()
que permite crear gráficas usando vectores numéricos.
plot(x = poker_gan)
plot(x = poker_gan, y = ruleta_gan)
Un histograma del vector se crea con la función hist()
.
hist(x = poker_gan)
3.1.7 Vectores de distribuciones
En R existen funciones que generan vectores de realizaciones aleatorias de distribuciones probabilísticas.
- Distribución Normal:
norm_vec <- rnorm(n = 100, mean = 0, sd = 10)
hist(norm_vec)
- Distribución Uniforme:
unif_vec <- runif(n = 100, min = 10, max = 100)
hist(unif_vec)
Ej: Normal
Usando la función rnorm()
genera 1000 realizaciones de una distribución con media \(\mu\) 10 y desviación estándar \(\sigma\) 5.
norm1000_vec <- rnorm()
Realiza un histograma del vector obtenido.
hist()