Learn in 10 minutes

Learn in 10 minutes

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:

  1. Practica: Trabaja en pequeños proyectos de análisis de datos
  2. Explora paquetes: Aprende dplyr, ggplot2, tidyr y otros paquetes esenciales
  3. Recursos en línea: Usa la documentación de R, Stack Overflow y R-bloggers
  4. Libros: “R for Data Science” de Hadley Wickham
  5. 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.