Propósito

Romper el hielo con R: crear objetos, asignar variables, trabajar con vectores y reconocer clases básicas. Actividad pensada para 25–35 minutos.

Reglas del juego

  • Usa <- para asignar y nombres válidos (sin espacios, no iniciar con número).
  • Verifica lo que creas con class(), typeof(), length(), is.*().
  • Si algo falla, lee el error (R no muerde).

1) Objetos y asignación (5 min)

# Crea 4 objetos:
edad <- 27
nombre <- "Ana"
es_actuario <- TRUE
tasa <- 0.035

# Míralos
edad; nombre; es_actuario; tasa

Mini‑reto 1.1: ¿Qué está mal aquí? Corrige y ejecuta.

# PISTA: nombres inválidos y reasignación correcta
#2tasa <- 3
#mi nombre <- "Luis"
tasa2 <- 3
mi_nombre <- "Luis"

2) Tipos y clases (5 min)

class(edad); typeof(edad)
class(nombre); typeof(nombre)
class(es_actuario); typeof(es_actuario)
class(tasa); typeof(tasa)

Mini‑reto 2.1: Convierte y verifica.

x <- "42"
x_num <- as.numeric(x)
class(x_num); typeof(x_num)

y <- 10
y_char <- as.character(y)
class(y_char); typeof(y_char)

3) Vectores atómicos (10 min)

# Construcción
v1 <- c(10, 20, 30)
v2 <- 1:5
v3 <- seq(from = 0, to = 1, by = 0.25)
v4 <- rep(TRUE, 4)

v1; v2; v3; v4
length(v1); length(v2)

Operaciones vectorizadas y funciones básicas

ingresos <- c(100, 120, 90, 110, 130)
ingresos_aj <- ingresos * 1.05  # +5%
sum(ingresos); mean(ingresos); median(ingresos)

Indexación

ingresos[1]       # primer elemento
ingresos[2:4]     # rango
ingresos[-1]      # todos menos el primero
ingresos[ingresos > 110]  # filtrado lógico

NA y manejo básico

siniestros <- c(1, 0, 2, NA, 1, 3, 0, 0)
is.na(siniestros)
mean(siniestros)                 # devuelve NA
mean(siniestros, na.rm = TRUE)   # ignora NA
siniestros_sinNA <- ifelse(is.na(siniestros), 0, siniestros)

4) Coerción y reciclaje (5 min)

c(1, 2, "3")         # coerción a character
c(TRUE, 2) + 1       # TRUE -> 1

# Reciclaje: se repite el vector corto
c(10, 20, 30, 40) + c(1, 2)

Mini‑reto 4.1: ¿Qué resultado esperas antes de correr lo anterior? Escribe tu predicción en un comentario.


5) Factores (opcional, 5 min)

riesgo <- c("Bajo", "Medio", "Alto", "Bajo", "Alto")
riesgo_f <- factor(riesgo, levels = c("Bajo", "Medio", "Alto"), ordered = TRUE)
riesgo_f
class(riesgo_f)
table(riesgo_f)

6) Mini‑reto final (8–10 min)

Con el vector siniestros ya creado:

  1. Reemplaza NA por 0 (si no lo hiciste).
  2. Calcula la tasa de siniestro promedio.
  3. Crea tipo_siniestro: "sin" si 0, "con" si >=1.
  4. Nombra los elementos con names() como "P1", "P2", … "P8" y filtra solo los "con".
# (Completa aquí)
siniestros_clean <- ifelse(is.na(siniestros), 0, siniestros)
tasa_prom <- mean(siniestros_clean)
tipo_siniestro <- ifelse(siniestros_clean == 0, "sin", "con")
names(siniestros_clean) <- paste0("P", seq_along(siniestros_clean))
siniestros_con <- siniestros_clean[tipo_siniestro == "con"]

tasa_prom
tipo_siniestro
siniestros_con

Chequeo rápido (auto‑evaluación)

Siguiente actividad: data frames y listas (spoiler: todo es una lista… casi).