Al inicio de nuestro documento debe incluir esta línea de código para que compile nuestro RMarkdown

knitr::opts_chunk$set(echo = TRUE)

1. TIPOS DE OBJETOS Y ESTRUCTURA DE DATOS

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

VECTORES

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

Funciones Útiles para conocer a nuestros objetos

Acontinuación presentaremos las funciones más frecuentemente utilizadas quue nos permiten tener un mejor entendimiento de nuestros objetos.

Tipo de dato

# 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

Tamaño del objeto

length(objeto_1)
## [1] 6

Seleccion / Extracción de datos de nuestro vector

# 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

Agregar / Reescribir valores

# 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

Construcción de un vector con una secuncia de valores

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

Vector con caracteres

animales <- c("perro", "gato", "araña", "tigre")
animales
## [1] "perro" "gato"  "araña" "tigre"

Combinamos datos de tipo caracter con numéricos

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\]

Vectores numéricos

Vamos a tener dos principales tipos de datos que van a ser los que vamos a utilizar más frecuentemente

  • Integer: \[\mathbb{Z}\]
  • Double: \[\mathbb{R}\]
# 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

Ordenar nuestro vector

# Para ordenar un vector de tipo numérico usamos la función "sort"
enteros <- sort(enteros)
enteros
## [1] 20 20 21 23 32 45