En este repaso se presentan los conceptos fundamentales sobre cómo las computadoras almacenan, procesan información y ejecutan programas, y la definiciones de elementos clave al programar.
0.1.1 Jerarquía de Datos
La unidad de información más básica es el bit, que puede tomar únicamente los valores 0 o 1.
Un byte es igual a 8 bits, el cual permite representar un character.
Los characters corresponden a letras, dígitos o símbolos especiales y se codifican internamente como patrones de bits según un character set, como ASCII o Unicode.
Los characters se agrupan en fields, que representan unidades de información con significado, por ejemplo, un nombre o una edad.
Varios fields relacionados forman un record.
Un conjunto de records constituye un file, y un database
0.2 Expresiones, objetos y simbolos
El código en R se compone de ’expressions’ son compuestas de objetos y funciones como operaciones aritmeticas (Ej: 1+1), asignaciones (Ej: x<- 1), sentencias condicionales ( Ej: if (x<1) { “x es menor a 1} ), etc
El código R es un lenguaje que manipula ‘objects’ como vectores, listas, arreglos, funciones
Los nombres de variable en R son denominados ‘symbols’
Para nombrar un objeto: un nombre no puede empezar con un número, y no puede usar caracteres especiales como: ^, !, $, @, +, -, /, or *:
OJO! R puede sobreescribir variables existentes sin preguntar
0.3 Shortcuts
0.4 Tipos de Variables
Todo se guarda como un objeto. Cada objeto tiene un modo,tipo y una clase, lo cual determina qué operaciones se pueden realizar sobre él.
Tipo : determina como se guarda internamente en memoria
typeof("hola") # "character"
[1] "character"
typeof(TRUE) # "logical"
[1] "logical"
typeof(1L) # "integer"al poner la letra L mayuscula a lado
[1] "integer"
typeof(10) # "double" por default
[1] "double"
typeof(list()) # "list"
[1] "list"
typeof(3.14) # "double"
[1] "double"
# mode() es una version antigua de typeof()
Clase: indica como debe comportarse el objeto en R , define qué metodos usan print, plot, etc.
x <-5class(x) ## "numeric"
[1] "numeric"
d <-as.Date("2024-01-01")typeof(d) ## "double"
[1] "double"
class(d) ## "Date"
[1] "Date"
R cuenta las fechas como números (como días desde 1970) , aunque la fecha se guarda en memoria como un double, R la trata como fecha en su clase
R por default usa double, y lo que va en comillas “” es texto
El [1] que aparece a veces solo indica la posición del primer elemento del resultado.
0.5 Objetos (objects) comunes en R
0.5.1 Vectores
Un vector es una colección unidimensional de elementos del mismo tipo.
Los corchetes [ ] a lado de una variable indican la posicion k del objeto, como el cajón al que accedes
x[1]
[1] 1
y[1:3]
[1] "a" "b" "c"
Todos los elementos deben ser del mismo tipo. Si no, R coacciona (convierte), sube esta escalera: logical → integer → numeric → character
0.5.2 Matrix
m <-matrix(1:6, nrow =2, ncol =3)m
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
0.5.3 Lista
l <-list(numeros =1:3,matriz =matrix(1:4, 2, 2),texto ="hola",logico =TRUE)
0.5.4 Aritmeticos y de Relacion
0.5.5 Operadores Lógicos
x <-5y <-4x >4& y <2
[1] FALSE
c(TRUE, FALSE) &c(TRUE, TRUE) # AND cada elemento del vector
[1] TRUE FALSE
# c(TRUE, FALSE) && c(TRUE, TRUE) # para no vectores# #solo evalua el primer elemento de cada objeto
0.6 Ejercicio 1
0.7 Ejemplo: proceso de un loop paso a paso
#El siguiente for-loop muestra cómo R itera desde 1 hasta 10.
En cada iteración se imprime: - el valor actual del índice i - el valor acumulado del contador
# 1. Definir el inicio y el final del loopinicio <-2fin <-5# 2. Crear una lista vacía para guardar los valorescontador_lista <-list()# 3. Inicializar el contadorcontador <- inicio# 4. Loop for: itera desde inicio hasta finfor (i in inicio:fin) {# Guardar el valor actual del contador en la lista contador_lista[[i]] <- contador# Aumentar el contador en 1 contador <- contador +1}# 5. Imprimir la lista finalcontador_lista
contador <-0for (i in1:10) { contador <- contador +2cat("Intento:", i,"| Valor del contador:", contador, "\n")}
Intento: 1 | Valor del contador: 2
Intento: 2 | Valor del contador: 4
Intento: 3 | Valor del contador: 6
Intento: 4 | Valor del contador: 8
Intento: 5 | Valor del contador: 10
Intento: 6 | Valor del contador: 12
Intento: 7 | Valor del contador: 14
Intento: 8 | Valor del contador: 16
Intento: 9 | Valor del contador: 18
Intento: 10 | Valor del contador: 20
i = 1 | contador anterior = 0 | contador nuevo = 1
i = 2 | contador anterior = 1 | contador nuevo = 2
i = 3 | contador anterior = 2 | contador nuevo = 3
i = 4 | contador anterior = 3 | contador nuevo = 4
i = 5 | contador anterior = 4 | contador nuevo = 5
i = 6 | contador anterior = 5 | contador nuevo = 6
i = 7 | contador anterior = 6 | contador nuevo = 7
i = 8 | contador anterior = 7 | contador nuevo = 8
i = 9 | contador anterior = 8 | contador nuevo = 9
i = 10 | contador anterior = 9 | contador nuevo = 10
############################################################# EJEMPLOS DE CONTADORES EN R############################################################cat("EJEMPLO 1: Contador simple (1 a 10)\n")
EJEMPLO 1: Contador simple (1 a 10)
for (i in1:10) {cat("i =", i, "\n")}
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9
i = 10
############################################################# EJEMPLOS DE CONDICIONALES EN R############################################################x <-1if (x >5) {cat("x es mayor que 5\n") x+1} else {cat("x no es mayor que 5") x-5}
x no es mayor que 5
[1] -4
# Ejemplo 2: if - elsey <-3if (y %%2==0) {cat("y es par\n")} else {cat("y es impar\n")}
y es impar
# Ejemplo 3: if - else if - elsenota <-8if (nota >=9) {cat("Excelente\n")} elseif (nota >=7) {cat("Aprobado\n")} else {cat("Reprobado\n")}