Aprende R en 10 minutos
R es un lenguaje de programación y entorno poderoso para computación estadística, análisis de datos y visualización. Este tutorial cubre los conceptos esenciales para que comiences con la programación en R.
1. Comenzando con R
Empecemos con un programa simple. Abre R o RStudio e ingresa el siguiente código:
print("¡Hola, Mundo!")
También puedes ejecutar esto en la consola de R. La salida será:
[1] "¡Hola, Mundo!"
Este programa simple demuestra la funcionalidad básica de salida de R. La función print()
muestra información de texto en la consola.
2. Sintaxis básica y variables
La sintaxis de R está diseñada para computación estadística y análisis de datos. Exploremos la asignación de variables y operaciones básicas.
# Esto es un comentario
x <- 5 # Asignación usando el operador <-
y = 10 # Asignación usando el operador = (menos común)
print(x + y)
Reglas básicas de sintaxis en R:
- Asignación: Usa
<-
para asignación de variables (preferido) o=
- Comentarios: Los comentarios de una línea comienzan con
#
- Funciones: Usa paréntesis
()
para llamadas de funciones - Vectores: R está vectorizado - las operaciones funcionan en vectores completos
3. Tipos de datos y estructuras
R tiene varios tipos de datos y estructuras fundamentales para computación estadística.
3.1 Tipos de datos básicos
# Numérico (double)
num <- 3.14
print(class(num))
# Entero
int <- 42L
print(class(int))
# Carácter (cadena)
text <- "Hola R"
print(class(text))
# Lógico (booleano)
flag <- TRUE
print(class(flag))
3.2 Vectores
Los vectores son la estructura de datos fundamental en R. Son arreglos unidimensionales que pueden contener datos numéricos, de caracteres o lógicos.
# Creando vectores
numeric_vector <- c(1, 2, 3, 4, 5)
character_vector <- c("manzana", "banana", "cereza")
logical_vector <- c(TRUE, FALSE, TRUE)
# Operaciones con vectores
print(numeric_vector * 2) # Multiplica cada elemento por 2
print(numeric_vector + 1) # Suma 1 a cada elemento
print(length(numeric_vector)) # Obtiene la longitud del vector
3.3 Listas
Las listas son contenedores flexibles que pueden contener elementos de diferentes tipos.
# Creando una lista
my_list <- list(
name = "Juan",
age = 30,
scores = c(85, 92, 78),
active = TRUE
)
# Accediendo a elementos de la lista
print(my_list$name)
print(my_list[["age"]])
print(my_list[[3]])
3.4 Data Frames
Los data frames son la estructura de datos más importante para análisis de datos en R. Son como tablas con filas y columnas.
# Creando un data frame
df <- data.frame(
name = c("Alicia", "Bob", "Carlos"),
age = c(25, 30, 35),
score = c(88, 92, 85)
)
# Viendo el data frame
print(df)
print(str(df)) # Estructura del data frame
print(summary(df)) # Estadísticas resumidas
4. Operaciones básicas
R proporciona un conjunto rico de operadores para operaciones matemáticas y lógicas.
# Operaciones aritméticas
a <- 10
b <- 3
print(a + b) # Suma
print(a - b) # Resta
print(a * b) # Multiplicación
print(a / b) # División
print(a ^ b) # Exponenciación
print(a %% b) # Módulo
print(a %/% b) # División entera
# Operaciones de comparación
print(a > b) # Mayor que
print(a == b) # Igual a
print(a != b) # No igual a
print(a <= b) # Menor o igual que
# Operaciones lógicas
print(TRUE & FALSE) # AND
print(TRUE | FALSE) # OR
print(!TRUE) # NOT
5. Estructuras de control
R proporciona estructuras de control estándar para el flujo del programa.
5.1 Sentencias if
age <- 20
if (age >= 18) {
print("Adulto")
} else if (age >= 13) {
print("Adolescente")
} else {
print("Niño")
}
5.2 Bucles for
# Iterando sobre un vector
fruits <- c("manzana", "banana", "cereza")
for (fruit in fruits) {
print(fruit)
}
# Usando secuencia
for (i in 1:5) {
print(paste("Número:", i))
}
5.3 Bucles while
count <- 1
while (count <= 5) {
print(count)
count <- count + 1
}
6. Funciones
Las funciones en R son bloques de código reutilizables para tareas específicas.
# Definición básica de función
calculate_area <- function(length, width) {
area <- length * width
return(area)
}
# Llamando la función
result <- calculate_area(5, 3)
print(result)
# Función con parámetros por defecto
greet <- function(name = "Invitado") {
return(paste("Hola,", name))
}
print(greet("Alicia"))
print(greet()) # Usa parámetro por defecto
7. Manipulación de datos
R sobresale en la manipulación de datos. Exploremos algunas operaciones básicas.
# Data frame de ejemplo
students <- data.frame(
name = c("Alicia", "Bob", "Carlos", "Diana"),
math_score = c(85, 92, 78, 95),
science_score = c(88, 90, 82, 96),
grade = c("A", "A", "B", "A")
)
# Subconjunto de datos
print(students[students$math_score > 85, ]) # Filas donde math_score > 85
print(students[, c("name", "math_score")]) # Columnas específicas
# Agregando nuevas columnas
students$total_score <- students$math_score + students$science_score
students$average_score <- students$total_score / 2
print(students)
8. Visualización de datos
R tiene capacidades de visualización poderosas, especialmente con ggplot2.
# Gráficos básicos (R base)
# Crear algunos datos de ejemplo
x <- 1:10
y <- x^2
# Gráfico de dispersión
plot(x, y, main = "Gráfico de Dispersión", xlab = "X", ylab = "Y", col = "azul", pch = 16)
# Gráfico de líneas
plot(x, y, type = "l", main = "Gráfico de Líneas", xlab = "X", ylab = "Y", col = "rojo")
# Histograma
hist(rnorm(100), main = "Histograma", xlab = "Valores", col = "azul claro")
8.1 Usando ggplot2 (si está instalado)
# Instalar y cargar ggplot2 si no está instalado
# install.packages("ggplot2")
library(ggplot2)
# Crear un data frame de ejemplo
plot_data <- data.frame(
category = c("A", "B", "C", "D"),
value = c(25, 40, 30, 35)
)
# Crear un gráfico de barras
ggplot(plot_data, aes(x = category, y = value)) +
geom_bar(stat = "identity", fill = "azul acero") +
labs(title = "Ejemplo de Gráfico de Barras", x = "Categoría", y = "Valor") +
theme_minimal()
9. Análisis estadístico
R está diseñado para computación estadística. Aquí hay algunas funciones estadísticas básicas.
# Datos de ejemplo
data <- c(23, 45, 67, 34, 56, 78, 89, 12, 45, 67)
# Estadísticas básicas
print(mean(data)) # Media
print(median(data)) # Mediana
print(sd(data)) # Desviación estándar
print(var(data)) # Varianza
print(min(data)) # Mínimo
print(max(data)) # Máximo
print(summary(data)) # Resumen de cinco números
# Correlación
x <- 1:10
y <- x + rnorm(10) # Agregar algo de ruido
print(cor(x, y)) # Coeficiente de correlación
# Regresión lineal
model <- lm(y ~ x)
print(summary(model))
10. Trabajando con archivos
R proporciona funciones para leer y escribir archivos.
# Escribiendo a un archivo
write.csv(students, "students.csv", row.names = FALSE)
# Leyendo desde un archivo
# read_data <- read.csv("students.csv")
# print(read_data)
# Trabajando con archivos de texto
# writeLines(c("Línea 1", "Línea 2", "Línea 3"), "ejemplo.txt")
# text_content <- readLines("ejemplo.txt")
# print(text_content)
11. Paquetes y bibliotecas
El poder de R viene de su extenso ecosistema de paquetes.
# Instalando paquetes
# install.packages("dplyr") # Para manipulación de datos
# install.packages("ggplot2") # Para visualización
# Cargando paquetes
library(dplyr)
library(ggplot2)
# Usando dplyr para manipulación de datos
# students %>%
# filter(math_score > 85) %>%
# select(name, math_score) %>%
# arrange(desc(math_score))
12. Manejo de errores
R proporciona mecanismos para el manejo de errores.
# Manejo básico de errores
tryCatch({
result <- 10 / 0
print(result)
}, error = function(e) {
print(paste("Ocurrió un error:", e$message))
}, finally = {
print("Esto siempre se ejecuta")
})
# Usando try()
result <- try(10 / 0, silent = TRUE)
if (inherits(result, "try-error")) {
print("La división falló")
}
13. Temas avanzados
13.1 Funciones de la familia Apply
Las funciones de la familia apply son poderosas para operaciones vectorizadas.
# Crear una matriz
mat <- matrix(1:12, nrow = 3, ncol = 4)
print(mat)
# Aplicar funciones
print(apply(mat, 1, mean)) # Medias por fila
print(apply(mat, 2, sum)) # Sumas por columna
# lapply para listas
my_list <- list(a = 1:5, b = 6:10, c = 11:15)
print(lapply(my_list, mean)) # Media de cada elemento de la lista
# sapply (versión simplificada)
print(sapply(my_list, mean))
13.2 Manipulación de cadenas
text <- "Hola Programación R"
print(toupper(text)) # Convertir a mayúsculas
print(tolower(text)) # Convertir a minúsculas
print(nchar(text)) # Contar caracteres
print(substr(text, 1, 5)) # Extraer subcadena
# Usando el paquete stringr (si está instalado)
# library(stringr)
# str_split(text, " ") # Dividir cadena
13.3 Fecha y hora
# Fecha y hora actual
current_time <- Sys.time()
print(current_time)
# Formateando fechas
formatted_date <- format(current_time, "%Y-%m-%d")
print(formatted_date)
# Aritmética de fechas
today <- Sys.Date()
future_date <- today + 30
print(future_date)
14. Mejores prácticas
Aquí hay algunos consejos para escribir mejor código en R:
- Usa nombres de variables significativos
- Comenta tu código apropiadamente
- Usa operaciones vectorizadas en lugar de bucles cuando sea posible
- Carga paquetes al principio de tu script
- Usa indentación consistente (se recomiendan 2 espacios)
- Prueba tu código con datos de ejemplo
- Usa control de versiones para tus proyectos
15. Próximos pasos
Para continuar aprendiendo R:
- Practica: Trabaja en pequeños proyectos de análisis de datos
- Explora paquetes: Aprende dplyr, ggplot2, tidyr y otros paquetes esenciales
- Recursos en línea: Usa la documentación de R, Stack Overflow y R-bloggers
- Libros: “R for Data Science” de Hadley Wickham
- Cursos: Toma cursos en línea sobre análisis de datos con R
R es una herramienta poderosa para computación estadística y análisis de datos. Con práctica, podrás realizar manipulaciones de datos complejas, crear visualizaciones hermosas y conducir análisis estadísticos sofisticados.