Al inicio de nuestro documento debe incluir esta línea de código para que compile nuestro RMarkdown
knitr::opts_chunk$set(echo = TRUE)
En R tenemos diferentes estructuras y tipos de datos, en los que destacan:
| Estructura de datos | Tipos de datos |
|---|---|
| - Vectores | - Numérico: Int, Double, Date |
| - Matrices | - Caracter: Strings, Factor |
| - Tablas & Listas (Diccionarios) | - Lógicos: Boolean |
# El atajo para crear un chunk lo encontramos en la pestaña code
# CTRL + ALT + I
Se define a un vector como una colección de valores indexables del mismo tipo de datos.
Para crear una lista o una tabla usamos la función “c” (combine)
objeto_1 <- c(1960, 1980, 1990, 2000, 2010, 2020)
objeto_1
## [1] 1960 1980 1990 2000 2010 2020
Acontinuación presentaremos las funciones más frecuentemente utilizadas quue nos permiten tener un mejor entendimiento de nuestros objetos.
# La functión "str" (structure) nos permite conocer el tipo de dato del objeto
str(objeto_1)
## num [1:6] 1960 1980 1990 2000 2010 2020
length(objeto_1)
## [1] 6
# Extraemos el valor que esté en la posición 3
objeto_1[3]
## [1] 1990
# Extraemos múltiples valores con la función "c"
objeto_1[c(1, 3, 5)]
## [1] 1960 1990 2010
# Extraemos por rango; En este ejemplo extraemos los primeros 3 valores
objeto_1[1:3]
## [1] 1960 1980 1990
# Actualmente nuestro objeto cuenta con 6 datos.
# Para agregar uno nuevo basta con indicar la posición en la que lo deseamos guardar
objeto_1[7] <- 2030
objeto_1
## [1] 1960 1980 1990 2000 2010 2020 2030
Este tipo de procedimientos son útiles para simulaciones Monte-Carlo que más adelante serán ocupadas para el modelo de Black & Scholes en la valuación de derivados financieros.
Podemos crear una secuencia de valores con tantos incrementos como nosotros deseemos.
# Vamos a generar un vector con 200 observaciones
# Utilizamos la función "seq" (sequence) con incrementos de una unidad
obs = 200
objeto_2 <- seq(1, obs, 1)
objeto_2
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
## [19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
## [37] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
## [55] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
## [73] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
## [91] 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
## [109] 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
## [127] 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
## [145] 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
## [163] 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
## [181] 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
## [199] 199 200
# Vamos a generar un vector con (200 / #incrementos) observaciones
# Utilizamos la función "seq" (sequence) con incrementos de 3 unidades
obs = 200
objeto_3 <- seq(0, obs, 3)
objeto_3
## [1] 0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54
## [20] 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99 102 105 108 111
## [39] 114 117 120 123 126 129 132 135 138 141 144 147 150 153 156 159 162 165 168
## [58] 171 174 177 180 183 186 189 192 195 198
animales <- c("perro", "gato", "araña", "tigre")
animales
## [1] "perro" "gato" "araña" "tigre"
rareza <- c(animales, objeto_1)
rareza
## [1] "perro" "gato" "araña" "tigre" "1960" "1980" "1990" "2000" "2010"
## [10] "2020" "2030"
Observación: R convierte los elementos al tipo de dato de mayor jerarquía
\[String > Double > Int > Boolean > Null\]
Vamos a tener dos principales tipos de datos que van a ser los que vamos a utilizar más frecuentemente
# Estamos almacenando Enteros y Racionales; Por jerarquía de tipo de dato
# automáticamente lo va a convertir a double
numeros <- c(20, 20.5, 21, 2, 23, 23.4)
numeros
## [1] 20.0 20.5 21.0 2.0 23.0 23.4
Vamos a convertirlos explicitamente a enteros
enteros <- as.integer(c(45.23,23,20,20.50,21.75,32.99))
enteros
## [1] 45 23 20 20 21 32
# Para ordenar un vector de tipo numérico usamos la función "sort"
enteros <- sort(enteros)
enteros
## [1] 20 20 21 23 32 45