1. Estructura de datos Vectores en R

Un vector es la estructura de datos más sencilla en R. Un vector es una colección de uno o más datos del mismo tipo.

1.1. Un vector de una posición

En R cualquier valor puede ser tomada como un vector. Un simple número es un vector de tipo numérico, una cadena es un vector de tipo char, un TRUE o FALSE es un vector de tipo booleana o lógico.

Si se establece un valor constante como 3 o “Patricia”, R los toma por default como Vecores de una sola posición.

Los siguiente ejemplos de 3 y “Patricia” son vectores por default pero sin ser almacenados en variables.

  • Se utiliza la función is.vector() para comprobar que es una esructura tipo vector.
  • Se utiliza la función length() para contar o determinar el número de elementos de un vector.
  • Se utiliza la función typeof() para determinar de que tipo de datos es el vector.
    • Doble - Double
    • Entero - Integer
    • Char - Char
    • Factor - Factor
    • Lógico - Logical
3
## [1] 3
is.vector(3)
## [1] TRUE
"Patricia"
## [1] "Patricia"
is.vector("Patricia")
## [1] TRUE
length(3)
## [1] 1
length("Patricia")
## [1] 1
is.vector(TRUE)
## [1] TRUE
is.vector(FALSE)
## [1] TRUE
typeof(3)
## [1] "double"
typeof("Patricia")
## [1] "character"
typeof(TRUE)
## [1] "logical"
typeof(3L) # Long
## [1] "integer"

1.2. Crear vectores en R

Se pueden crear vectores usando los dos puntos ‘:’ para determinar un rango de elementos desde inicio hasta un valor finito.

Se pueden crear también usando la función c() más adelante descrita

1:5
## [1] 1 2 3 4 5
is.vector(1:5)
## [1] TRUE
length(1:5)
## [1] 5

1.3. Vectores que ya existen en R

  • letters: las letras minúsculas
  • LETTERS: las letras mayúsculas
  • month.abb: Los nombres de los meses abreviados
  • month.name: Los nombres de los meses
  • pi: valor de pi 3.14159….
letters
##  [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
## [20] "t" "u" "v" "w" "x" "y" "z"
LETTERS
##  [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
## [20] "T" "U" "V" "W" "X" "Y" "Z"
month.abb
##  [1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"
month.name
##  [1] "January"   "February"  "March"     "April"     "May"       "June"     
##  [7] "July"      "August"    "September" "October"   "November"  "December"
pi
## [1] 3.141593

1.4. Crear vectores con al función c() de varios tipos

Se crean vectores usando la función c() (combinar), concatenar, un conjunto de elementos.

Se llama a esta función y se le da como argumento los elementos que se desean combinar en un vector, separados por comas.

1.4.1. Crear vector numérico
c(1, 2, 3, 5, 8, 13)
## [1]  1  2  3  5  8 13
1.4.2. Crear vector de cadena de caracteres
c("arbol", "casa", "persona")
## [1] "arbol"   "casa"    "persona"
1.4.3. Crear un vector lógico
c(TRUE, TRUE, FALSE, FALSE, TRUE)
## [1]  TRUE  TRUE FALSE FALSE  TRUE

1.5. Asignando un vector a una variable

  • Se crea un vector de números
  • se identifica si es realmente un vector is.vector()
  • se cuentan con la función lenght()
  • se determina ¿de que tipo de datos es? el vector con la función typeof().
numeros <- c(4,5,6,7,6,5,4,6,7,8,9)
numeros
##  [1] 4 5 6 7 6 5 4 6 7 8 9
is.vector(numeros)
## [1] TRUE
length(numeros)
## [1] 11
typeof(numeros)
## [1] "double"

1.6. Vectores edades y nombres

  • Se crean vectores usando R mediante la función c() y asignarlo a variables

  • Se utiliza el operador de asignación <- para asignar la expresión del lado derecho a un variable del lado izquierdo. <- Indica la dirección; también puede ser -> y es a la inversa.

edades <- c(50, 34, 45, 35, 38, 36, 29, 43, 40, 28, 28, 30, 28, 45)
nombres <- c("Rubén", "Dany", "Alma", "Carlos","Daniel", "Dell", "Francisco","Isaac", 'Javier', 'Jesús', "Laura","Luis", "Maria", "Verenice")


edades
##  [1] 50 34 45 35 38 36 29 43 40 28 28 30 28 45
nombres
##  [1] "Rubén"     "Dany"      "Alma"      "Carlos"    "Daniel"    "Dell"     
##  [7] "Francisco" "Isaac"     "Javier"    "Jesús"     "Laura"     "Luis"     
## [13] "Maria"     "Verenice"
1.6.1. Agregar elementos a los vectores
edades <- c(edades, 43, 56)
nombres <- c(nombres, 'Pedro', 'Lucina')

edades
##  [1] 50 34 45 35 38 36 29 43 40 28 28 30 28 45 43 56
nombres
##  [1] "Rubén"     "Dany"      "Alma"      "Carlos"    "Daniel"    "Dell"     
##  [7] "Francisco" "Isaac"     "Javier"    "Jesús"     "Laura"     "Luis"     
## [13] "Maria"     "Verenice"  "Pedro"     "Lucina"
1.6.2. Acceder a los elementos de un vector

Por medio de cochetes [] se le indica cual elemento se desea obtener:

  • nombres[4]: se accede al elemento 4
  • nombres[4:6]: se accede desde el 4 al 6
  • nombres[c(-1,-2,-3)]: se accede a todos excepto a los elementos 1, 2 y 3
  • nombres[length(nombres)]: Se accede al último elemento
nombres
##  [1] "Rubén"     "Dany"      "Alma"      "Carlos"    "Daniel"    "Dell"     
##  [7] "Francisco" "Isaac"     "Javier"    "Jesús"     "Laura"     "Luis"     
## [13] "Maria"     "Verenice"  "Pedro"     "Lucina"
nombres[4]
## [1] "Carlos"
nombres[4:6]
## [1] "Carlos" "Daniel" "Dell"
nombres[c(-1,-2,-3)]
##  [1] "Carlos"    "Daniel"    "Dell"      "Francisco" "Isaac"     "Javier"   
##  [7] "Jesús"     "Laura"     "Luis"      "Maria"     "Verenice"  "Pedro"    
## [13] "Lucina"
nombres[length(nombres)]
## [1] "Lucina"

1.7. Secuencias

  • Se puede utilizar la función seq() para generar vectores numéricos por medio de secuencia de valores.
  • La función seq() es semejante a una secuecia por ejemplo 1:20. Inicia en 1 y termina en 20 aunque tiene mas versatildiad seq().
seq(1,20) # seq(from=1, to=20)
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
seq(from=1, to=20)
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
seq(from = 5, to = 100, by = 5)
##  [1]   5  10  15  20  25  30  35  40  45  50  55  60  65  70  75  80  85  90  95
## [20] 100
seq(-10, 10, 1)
##  [1] -10  -9  -8  -7  -6  -5  -4  -3  -2  -1   0   1   2   3   4   5   6   7   8
## [20]   9  10
seq(-5.5, 5.5, 0.5)
##  [1] -5.5 -5.0 -4.5 -4.0 -3.5 -3.0 -2.5 -2.0 -1.5 -1.0 -0.5  0.0  0.5  1.0  1.5
## [16]  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5

1.7. Repeticiones

  • Las repeticiones de generan con al función rep() y es una secuencia repetida de un valor.
  • rep(1,3): repetir el 1 tres veces
  • rep(2:5, 4): repetir la secuencia del 2 al 5 cuatro veces rep(LETTERS, 3): Repetir als letras mayúsulas tres veces
rep(1, 3)
## [1] 1 1 1
rep(2:5, 4)
##  [1] 2 3 4 5 2 3 4 5 2 3 4 5 2 3 4 5
rep(LETTERS, 3)
##  [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
## [20] "T" "U" "V" "W" "X" "Y" "Z" "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L"
## [39] "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z" "A" "B" "C" "D" "E"
## [58] "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X"
## [77] "Y" "Z"

Operaciones con vectores.

  • Las operciones con vectores también se les denomina vectorizar.

  • En los vectores numéricos se puede ejecutar cualqueir operación aritmetica sobre ellos.

    • \({numeros * 2}\)
    • \({numeros ^ 2}\)
    • \({numeros + numeros}\)
numeros
##  [1] 4 5 6 7 6 5 4 6 7 8 9
numeros *2
##  [1]  8 10 12 14 12 10  8 12 14 16 18
numeros ^ 2
##  [1] 16 25 36 49 36 25 16 36 49 64 81
numeros + numeros
##  [1]  8 10 12 14 12 10  8 12 14 16 18
  • Se puede transformar (combinar) un tipo de dato de un vector a otro tipo de datos, por ejemplo de numérico a character
combinado <- c(numeros, letters)
combinado
##  [1] "4" "5" "6" "7" "6" "5" "4" "6" "7" "8" "9" "a" "b" "c" "d" "e" "f" "g" "h"
## [20] "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
typeof(combinado)
## [1] "character"

1.8 Ordenar vectores

La función sort() ordena un vector de manera decreciente o creciente, es decir, ascendente o descendente

Referencias

numeros
##  [1] 4 5 6 7 6 5 4 6 7 8 9
ordenados <- sort(numeros, decreasing = TRUE)

ordenados
##  [1] 9 8 7 7 6 6 6 5 5 4 4

https://rpubs.com/rpizarro/604323

https://bookdown.org/jboscomendoza/r-principiantes4/

https://es.r4ds.hadley.nz/index.html