Primeros pasos en R y RStudio
Universidad El Bosque
3 de junio de 2026
Aquí encontrarás todo el material del curso:
Ábrelo ahora en tu computador (o teléfono).
ggplot2Parte 1
R y los lenguajes de programación
Programa con interfaz gráfica (GUI)
Ejemplos: Excel, SPSS, GraphPad
Lenguaje de programación
Ejemplos: R, Python, Julia
R es un lenguaje de programación diseñado para el análisis estadístico y la visualización de datos.
R es un lenguaje completo con acceso a todos los recursos del computador: análisis estadístico, manejo de archivos, conexión a internet, generación de documentos, aplicaciones web, y mucho más.
FOSS = Free and Open Source Software
“Free” en FOSS significa libre:
¿Por qué importa para la ciencia?
Un análisis en R es reproducible: el script documenta cada paso, y cualquier persona puede replicar tus resultados exactamente.
El verdadero poder de R viene de los paquetes: colecciones de funciones creadas por la comunidad que amplían R base.
CRAN (Comprehensive R Archive Network) es el repositorio oficial:
Demo en vivo: veamos cuántos paquetes hay hoy y cuáles se actualizaron recientemente.
Muchos paquetes también viven en GitHub y se instalan con herramientas adicionales.
Parte 2
El entorno de trabajo
Puedes darle instrucciones a R directamente desde la terminal:
Un script es un archivo de texto plano con extensión .R; la extensión indica al sistema operativo que lo abra con R, y cualquier editor puede abrirlo.
El script es tu registro permanente de lo que hiciste. Es la base de la reproducibilidad científica.
R funciona solo, pero cada pieza vive en su propia ventana flotante: consola, editor de scripts, gráficas, entorno… Todo disperso.
R es el perro. RStudio es la pinta: un IDE (Integrated Development Environment) que facilita el trabajo: todo lo que ejecutas en RStudio lo procesa R internamente.
R es el perro. RStudio es la pinta: un IDE (Integrated Development Environment) que facilita el trabajo: todo lo que ejecutas en RStudio lo procesa R internamente.
Abre RStudio y ve a Tools > Global Options
General > Basic
Code > Editing
|>Code > Display
Code > Saving
UTF-8Appearance
Parte 3
La sintaxis de R
#Todo lo que sigue a # en una línea es ignorado por R (es un mensaje para humanos).
# Calcular el índice de masa corporal
peso <- 70 # kg
altura <- 1.75 # metros
imc <- peso / altura^2
# Resultado
imcLos comentarios son para ti dentro de seis meses, para tu colaboradora, y para cualquiera que quiera entender o reproducir tu análisis.
Un buen comentario explica qué hace un código, y/o por qué se hizo algo.
¡No olvides comentar tus scripts! Es parte de la buena práctica de programación y ciencia abierta.
# =========================================================
# Ejemplo de script organizado y comentado en R
# =========================================================
# ---------------------------------------------------------
# 1. Cargar paquetes necesarios
# ---------------------------------------------------------
library(ggplot2) # visualización
library(dplyr) # manipulación de datos
# ---------------------------------------------------------
# 2. Crear un conjunto de datos de ejemplo
# ---------------------------------------------------------
# Fijar semilla para que los resultados sean reproducibles
set.seed(123)
# Crear datos simulados
datos <- tibble(
participante = 1:20,
puntaje = rnorm(20, mean = 75, sd = 10),
grupo = rep(c("Control", "Experimental"), each = 10)
)
# ---------------------------------------------------------
# 3. Resumen descriptivo
# ---------------------------------------------------------
# Calcular promedio y desviación estándar de puntajes por grupo
resumen <- datos |>
group_by(grupo) |>
summarise(
promedio = mean(puntaje),
desviacion = sd(puntaje)
)
print(resumen)
# ---------------------------------------------------------
# 4. Visualización
# ---------------------------------------------------------
# Crear gráfico de distribución de puntajes por grupo
colores <- c("Control" = "#225faa", "Experimental" = "#6b1220")
ggplot(datos, aes(x = grupo, y = puntaje, fill = grupo, colour = grupo)) +
geom_violin(alpha = 0.2, width = 0.7, linewidth = 0.4) +
geom_boxplot(width = 0.12, alpha = 0.8, outlier.shape = NA, linewidth = 0.6) +
geom_jitter(width = 0.07, size = 2.8, alpha = 0.75) +
stat_summary(fun = mean, geom = "point", shape = 23,
size = 4.5, fill = "white", colour = "grey25") +
scale_fill_manual(values = colores) +
scale_colour_manual(values = colores) +
labs(
title = "Distribución de puntajes por grupo",
subtitle = "Cada punto = un participante · El rombo señala la media grupal",
x = NULL, y = "Puntaje", caption = "Datos simulados · set.seed(123)"
) +
theme_minimal(base_size = 14) +
theme(
legend.position = "none",
panel.grid.major.x = element_blank(),
panel.grid.minor = element_blank(),
plot.title = element_text(face = "bold", size = 16),
plot.subtitle = element_text(colour = "grey50", size = 11),
axis.text.x = element_text(size = 13, face = "bold")
)Una función es como una fábrica: recibe insumos, hace algo con ellos, y produce un resultado.
En R, la sintaxis es siempre:
El nombre de la función va antes del paréntesis.
Los argumentos van dentro del paréntesis, separados por comas.
[1] "Hola, mundo"
Escribe el nombre de cualquier función seguido de ? en la consola para ver su documentación: ?round
Cuando usas <- para asignar, guardas el resultado en un objeto.
read.csv().Reglas para nombres de objetos: sin espacios, sin acentos, no empezar con número, distingue mayúsculas (datos ≠ Datos). Convención en tidyverse: snake_case.
c() (combine) crea vectores: secuencias de valores del mismo tipo.
[1] "Ana" "Luis" "Sara" "Pedro"
Todo en R es, en el fondo, un vector.
Un data frame es una tabla: una colección de vectores de igual longitud.
nombre edad
1 Ana 25
2 Luis 31
3 Sara 19
4 Pedro 42
Es la estructura más común para datos: filas son observaciones, columnas son variables.
Parte 4
Primera figura con ggplot2

ggplot2 es el paquete que usaremos para crear gráficas. Antes de usarlo hay que instalarlo una sola vez, y cargarlo cada sesión.
install.packages() es como comprar un libro y ponerlo en el estante. library() es como abrirlo y tenerlo en la mesa.
diamondsdiamonds viene incluido con ggplot2. Contiene información de 53 940 diamantes.
ggplot() crea un lienzo. Definimos qué datos usar y qué variables mapear a los ejes con aes().
Añadimos una capa geométrica con geom_point().
alpha)Con tantos puntos hay sobreposición. alpha controla la transparencia (0 = invisible, 1 = sólido).
Mapeamos colour a cut dentro de aes() para colorear por grupo.
Los temas controlan la apariencia general. theme_minimal() es un buen punto de partida.
Viridis tiene tres variantes según el tipo de variable mapeada, y dos funciones según la estética usada.
_d, _c y _bCuando la variable es numérica continua, usa _c (gradiente suave) o _b (intervalos discretos).
labs()labs() controla todos los textos de la figura: título, subtítulo, ejes y leyenda.
ggplot(
diamonds,
aes(x = carat, y = price, colour = cut)
) +
geom_point(alpha = 0.1) +
theme_minimal() +
scale_colour_viridis_d(option = "magma") +
labs(
title = "Precio según peso del diamante",
subtitle = "Color según calidad del corte",
caption = "Fuente: conjunto de datos diamonds (ggplot2)",
x = "Peso (quilates)",
y = "Precio (USD)",
colour = "Corte"
)Actividad · 10 min
Modifica la figura
Partiendo del código que acabamos de ver, cambia al menos dos cosas:
x y/o y (prueba depth, table, carat, price)cut, color, clarity)¿Qué relaciones encuentras?
ggplot2 y tidyverse incluyen varias bases de datos listas para usar:
Escribe ?mpg, ?diamonds o ?[nombre_de_los_datos] en la consola para ver la descripción completa de cualquier base de datos.
Antes de terminar…
Quiz rápido
R y RStudio son básicamente lo mismo; solo cambia el nombre.
✓ c) R es el motor (el perro); RStudio es la pinta: un entorno cómodo para escribir y organizar código (sin R no hace nada).

¿Qué es sqrt en este código?
+ o <-✓ b) sqrt es una función: una instrucción con nombre que recibe insumos y produce un resultado. 144 es su argumento.
¿Qué es digits = 2 en este código?
round() cuántos decimales conservardigits✓ c) digits = 2 es un argumento: un parámetro (es este caso con nombre “digits”) que modifica el comportamiento de la función. digits es el nombre del argumento; 2 es su valor.
¿Qué hace <- en este código?
resultado y sqrt(144) son igualessqrt(144) en pantallaresultadosqrt(144) en un objeto llamado resultado✓ d) <- es el operador de asignación: evalúa lo que está a la derecha y guarda el resultado en el objeto nombrado a la izquierda. Después puedes usar resultado en cualquier parte del código.
¿Qué tipo de cosa es aes(x = carat, y = price) aquí?
diamondsggplot() que a su vez es una función✓ c) aes() es una función (tiene nombre y paréntesis), pero aquí aparece dentro de ggplot() como uno de sus argumentos. En R, pasar funciones como argumentos de otras funciones es completamente normal ¡y hace que sea poderosísimo!
Antes de la próxima sesión, elige un conjunto de datos de los que vimos (o cualquier otro que encuentres) y crea al menos una figura con ggplot2.
Experimenta cambiando:
geom_point, geom_jitter, geom_col, geom_histogram…)x, y, colour, size, shapetheme_minimal, theme_classic, theme_bw, theme_dark…)labs()No importa si la figura no queda perfecta. Lo importante es jugar con el código y ver qué pasa.
Hasta la próxima sesión
¡Gracias!
Curso de R · Universidad El Bosque · Junio 2026 · ↩︎ Sitio del curso