Hoja de Trucos de R
Última actualización
Hola Mundo y asignación
El operador de asignación idiomático de R es <- (el operador = también funciona).
| Operación | Sintaxis |
|---|---|
| Imprimir un valor | print("Hello, World!") |
| Impresión automática (consola) | "Hello, World!" |
| Concatenar e imprimir | cat("Hi", name, "\n") |
| Asignar (idiomático) | x <- 5 |
| Asignar (también válido) | x = 5 |
| Asignación a la derecha | 5 -> x |
| Comentario | # this is a comment |
| Ejecutar un script | Rscript app.R |
Tipos de datos y vectores
El vector es la estructura de datos fundamental de R; incluso un solo valor es un vector de longitud 1.
| Operación | Sintaxis |
|---|---|
| Vector numérico | v <- c(1, 2, 3) |
| Vector de caracteres | s <- c("a", "b") |
| Vector lógico | b <- c(TRUE, FALSE) |
| Secuencia de enteros | 1:10 |
| Secuencia con paso | seq(0, 1, by = 0.1) |
| Repetir valores | rep(0, times = 5) |
| Tipos básicos | numeric, character, logical, integer, complex |
| Comprobar / forzar el tipo | class(x), as.numeric("42") |
Operaciones con vectores
Las operaciones son vectorizadas y se aplican elemento a elemento; la indexación es base 1.
| Operación | Sintaxis |
|---|---|
| Acceder a un elemento (base 1) | v[1] |
| Cortar un rango | v[2:4] |
| Filtrado lógico | v[v > 2] |
| Descartar un elemento | v[-1] |
| Matemática elemento a elemento | v * 2, v1 + v2 |
| Longitud | length(v) |
| Reductores comunes | sum(v), mean(v), max(v) |
| Ordenar / invertir | sort(v), rev(v) |
| Vector con nombres | c(a = 1, b = 2) |
Data frames
Un data frame es una tabla de columnas, cada una un vector de igual longitud.
| Operación | Sintaxis |
|---|---|
| Crear un data frame | df <- data.frame(name = c("Ada"), age = c(30)) |
| Primeras / últimas filas | head(df), tail(df) |
| Dimensiones | nrow(df), ncol(df), dim(df) |
| Nombres de columnas | names(df), colnames(df) |
| Seleccionar una columna | df$age o df[["age"]] |
| Seleccionar filas / columnas | df[1, ], df[, "age"] |
| Filtrar filas | df[df$age > 18, ] |
| Añadir una columna | df$adult <- df$age >= 18 |
| Estadísticas resumidas | summary(df) |
| Vista general de la estructura | str(df) |
Factores y listas
Los factores almacenan datos categóricos; las listas contienen elementos de tipos mixtos.
| Operación | Sintaxis |
|---|---|
| Crear un factor | f <- factor(c("low", "high")) |
| Niveles del factor | levels(f) |
| Factor ordenado | factor(x, ordered = TRUE) |
| Conteo por nivel | table(f) |
| Crear una lista | l <- list(name = "Ada", scores = c(1, 2)) |
| Acceder por nombre | l$name o l[["name"]] |
| Acceder por posición | l[[1]] |
| Sublista (mantiene la lista) | l[1] |
| Longitud / nombres | length(l), names(l) |
Control de flujo
Las condiciones van entre paréntesis y los bloques entre llaves.
| Operación | Sintaxis |
|---|---|
| If / else if / else | if (x > 0) { ... } else if (x < 0) { ... } else { ... } |
| If-else vectorizado | ifelse(v > 0, "pos", "neg") |
| Bucle for | for (i in 1:10) { ... } |
| For sobre un vector | for (x in v) { ... } |
| Bucle while | while (x < 100) { ... } |
| Repeat con break | repeat { if (done) break } |
| Switch | switch(key, a = 1, b = 2) |
| Operadores lógicos | &&, ||, ! (escalar); &, | (vector) |
Funciones
Las funciones son de primera clase; se devuelve la última expresión evaluada.
| Operación | Sintaxis |
|---|---|
| Definir una función | add <- function(a, b) { a + b } |
| Retorno explícito | return(a + b) |
| Argumento por defecto | greet <- function(name = "World") { ... } |
| Argumento variádico | f <- function(...) { sum(...) } |
| Llamar por nombre | box(w = 2, h = 3) |
| Función anónima | function(x) x * 2 |
| Anónima (abreviada) | \(x) x * 2 |
| Pasar a una función de orden superior | sapply(1:3, function(x) x^2) |
La familia apply
Aplica una función sobre los datos sin escribir bucles explícitos.
| Función | Qué hace |
|---|---|
apply(m, 1, sum) | Aplica sobre las filas (1) o columnas (2) de una matriz |
sapply(v, f) | Aplica sobre un vector, simplifica a un vector/matriz |
lapply(v, f) | Aplica sobre un vector, siempre devuelve una lista |
vapply(v, f, numeric(1)) | Como sapply pero con un tipo de retorno verificado |
mapply(f, a, b) | Aplica sobre varios vectores en paralelo |
tapply(x, group, mean) | Aplica una función por grupo |
Map(f, a, b) | Apply multivariado que devuelve una lista |
Reduce(+, v) | Pliega un vector con una función binaria |
Funciones comunes de manipulación de datos y estadística
Funciones base de uso frecuente para resumir y reestructurar datos.
| Función | Qué hace |
|---|---|
mean(v) / median(v) | Promedio / valor central |
sd(v) / var(v) | Desviación estándar / varianza |
min(v) / max(v) / range(v) | Mínimo / máximo / ambos |
quantile(v) | Cuantiles (p. ej. cuartiles) |
table(x) | Conteo de frecuencias de los valores |
unique(v) / duplicated(v) | Valores distintos / marcas de duplicados |
is.na(v) / na.omit(df) | Encontrar / descartar valores faltantes |
aggregate(y ~ g, df, mean) | Resume y por el grupo g |
order(v) | Orden de índices para ordenar |
cor(x, y) | Correlación entre dos vectores |
La sintaxis de R que más usas, en una sola página. Esta hoja de trucos de R es una referencia rápida para el núcleo del lenguaje: asignación y tipos de datos, vectores y operaciones con vectores, data frames, factores y listas, control de flujo, funciones y la familia apply usada en todo el análisis de datos de rstats.
Todo lo que hay aquí es R base y se ejecuta en una instalación estándar, sin necesidad de paquetes adicionales. Copia lo que necesites o prueba cada fragmento en vivo en el playground de R, sin necesidad de configuración.
Preguntas frecuentes sobre la hoja de trucos de R
¿Esta hoja de trucos de R es gratis?
¿Los vectores de R están realmente indexados desde 1?
v[1] devuelve el primer elemento y v[length(v)] devuelve el último. Los índices negativos tienen un significado especial: v[-1] elimina el primer elemento en lugar de contar desde el final. Esta convención basada en 1 recorre por igual los vectores, las listas y los data frames.¿Qué es un data frame en R?
df[rows, columns], seleccionas una columna con df$name y lo inspeccionas con str(df) o summary(df).