3.1 Vectores

Un vector es un arreglo de una dimensión.

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)
En R se asigna el objeto a un nombre con: <-.


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

y así sucesivamente.


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()