Glosario de funciones de R
1 Operadores y funciones básicas de R
1.1 Operadores
Suponemos aquí que x representa un valor numérico o un vector numérico
| operador | Propósito | Tipo | Ejemplo |
|---|---|---|---|
| + | Suma | numérico | x + y |
| - | Resta | numérico | x - y |
| * | producto | numérico | x * y |
| / | división | numérico | x / y |
| ^ | potencia | numérico | x^2 |
Suponemos aquí que x e y representan dos valores o dos vectores numéricos
| operador | Propósito | Tipo | Ejemplo |
|---|---|---|---|
| == | igual | lógico | x == y |
| != | distinto | lógico | x !- y |
| < | menor | lógico | x < y |
| <= | menor o igual | lógico | x <= y |
| > | mayor | lógico | x > y |
| >= | mayor o igual | lógico | x >= y |
Suponemos aquí que s1 e s2 representan dos sentencias o valores lógicos
| operador | Propósito | Tipo | Ejemplo |
|---|---|---|---|
| & | AND (elemento a elemento) | lógico | s1 & s2 |
| | | OR (elemento a elemento) | lógico | s1 | s2 |
| ! | NOT (negación) | lógico | !s1 |
A continuación se muestra la tabla ordenada de los operadores en R, desde mayor a menor precedencia.
| Orden | Operadores | Descripción |
|---|---|---|
| 1 | () |
Paréntesis: control explícito de la evaluación |
| 2 | :: |
Acceso a funciones dentro de paquetes |
| 3 | $ [ |
Acceso a listas, data frames y objetos S4 |
| 4 | ^ |
Potenciación (asociatividad derecha-izquierda) |
| 5 | -x |
Operadores unarios |
| 6 | * / |
Multiplicación y división |
| 7 | + - |
Suma y resta |
| 8 | < > <= >= == != |
Comparaciones |
| 9 | : |
Secuencias |
| 10 | ! |
Negación lógica |
| 11 | & |
Conjunción lógica (AND) |
| 12 | | |
Disyunción lógica (OR) |
| 13 | <- -> = |
Asignación |
1.2 Funciones numéricas básicas
Suponemos aquí que x representa un valor numérico o un vector numérico
| Función | Propósito | Tipo | Ejemplo |
|---|---|---|---|
| abs() | Valor absoluto | numérico | abs(x) |
| round() | Redondeo | numérico | round(x,3) |
| sqrt() | Raíz cuadrada | numérico | sqrt(x) |
| log() | logaritmo natural | numérico | log(x) |
| log10() | logaritmo base 10 | numérico | log10(x) |
| exp() | exponencial | numérico | exp(x) |
1.3 Funciones para explorar un data.frame
Para un objeto de tipo data.frame llamado datos:
| Función | Propósito | Tipo | Ejemplo |
|---|---|---|---|
| dim() | número de filas y columnas | vector | dim(datos) |
| nrow() | número de filas | numérico | nrow(datos) |
| ncol() | número de columnas | numérico | ncol(datos) |
| Función | Propósito | Tipo | Ejemplo |
|---|---|---|---|
| names() colnames() |
nombres de las columnas | vector | names(datos)colnames(datos) |
| rownames() | nombres de filas | vector | rownames(datos) |
Para un objeto de tipo data.frame llamado datos:
| Función | Propósito | Ejemplo |
|---|---|---|
| class() | Clase del objeto | class(datos) |
| str() | Muestra la estructura interna del data.frame | str(datos) |
| attributes() | Lista todos los atributos del objeto | attributes(datos) |
Para un objeto de tipo data.frame llamado datos:
| Función | Propósito | Tipo | Ejemplo |
|---|---|---|---|
| head() | primeras filas | data.frame | head(datos) |
| tail() | últimas filas | data.frame | tail(datos) |
| View() | abre el visor de datos de RStudio | View(datos) |
Para un objeto de tipo data.frame llamado datos:
| Función | Propósito | Tipo | Ejemplo |
|---|---|---|---|
| anyNA() | ¿Hay algún NA en el data.frame | lógico | anyNA(datos) |
| is.na() | Consulta, devuelve verdadero/falso si el argumento es NA | vector lógico | is.na(c(1,2,NA,4)) |
| colSums(is.na()) | Número de NA por columnas | vector | colSums(is.na(datos)) |
2 Manejo de factores
| Función | Propósito | Tipo | Ejemplo |
|---|---|---|---|
| Creación | |||
| factor() | Crear un factor a partir de un vector x | factor | factor(x) |
| ordered() | Crear un factor ordenado | factor | ordered(f, levels = c("Leve","Moderado","Intenso")) |
| Función | Propósito | Tipo | Ejemplo |
|---|---|---|---|
| levels() | Mostrar los niveles del factor | vector | levels(f) |
| levels<- | Asignar o modificar los niveles del factor | vector | levels(f) <- c("Hombre","Mujer") |
| Función | Propósito | Tipo | Ejemplo |
|---|---|---|---|
| table() | Obtener frecuencias absolutas | tabla | table(f) |
| summary() | Resumen descriptivo del factor | tabla | summary(f) |
| Función | Propósito | Tipo | Ejemplo |
|---|---|---|---|
| as.factor() | Convertir un objeto en factor | factor | as.factor(x) |
| as.character() | Convertir un factor a texto | carácter | as.character(f) |
| as.numeric() | Convertir un factor a números (códigos internos) | numérico | as.numeric(f) |
3 Funciones para manejo de archivos
| Función | Objetivo | Comentarios | Ejemplo |
|---|---|---|---|
| read.table() | Leer datos en formato texto en forma general | Muy flexible; necesita especificar separador\(^{*}\), encabezados, decimales, etc. | datos <- read.table("datos.txt", header = TRUE, sep = ",") |
| read.csv() | Leer ficheros CSV con punto como separador decimal | Equivalente a read.table(..., sep = ",", dec = ".", header = TRUE) |
datos <- read.csv("datos.csv") |
| read.csv2() | Leer CSV “europeos” con coma decimal | Usa sep = ";" y dec = ",". Útil para ficheros de Excel guardados como CSV en español. |
datos <- read.csv2("datos_comas.csv") |
| read.delim() | Leer ficheros de texto delimitados por tabulador | Equivalente a read.table(..., sep = "\t", header = TRUE) |
datos <- read.delim("datos_tab.txt") |
| read.delim2() | Leer ficheros con tabulador y coma decimal | Versión “europea” de read.delim(): sep = "\t", dec = "," |
datos <- read.delim2("datos_tab_eu.txt") |
\(^{*}\) Para usar como separador el tabulador, indicar sep="\t"
| Función | Objetivo | Comentarios | Ejemplo |
|---|---|---|---|
| readRDS() | Leer un objeto R guardado en formato RDS | Recupera un único objeto (no carga al workspace completo) | datos <- readRDS("datos.rds") |
| load() | Cargar uno o varios objetos desde un .RData |
Restaura los objetos exactamente como se guardaron | load("proyecto.RData") |
| Función | Objetivo | Comentarios | Ejemplo |
|---|---|---|---|
| write.table() | Guardar data.frames en archivos de texto | Muy flexible; conviene usar row.names = FALSE para no añadir una columna extra con los nombres de fila. Permite elegir separador y decimal. |
write.table(datos, "salida.txt", sep = ",", dec = ".", row.names = FALSE) |
| write.csv() | Guardar data.frames en formato CSV (punto decimal) | Equivale a write.table(..., sep = ",", dec = ".", row.names = FALSE). Formato muy usado para compartir datos. |
write.csv(datos, "salida.csv", row.names = FALSE) |
| write.csv2() | Guardar data.frames en formato CSV con coma decimal | Usa sep = ";" y dec = ",". Útil en entorno “europeo” (configuraciones regionales en español). |
write.csv2(datos, "salida_eu.csv", row.names = FALSE) |
| Función | Objetivo | Comentarios | Ejemplo |
|---|---|---|---|
| saveRDS() | Guardar un único objeto en formato RDS | Guarda un objeto (por ejemplo un data.frame) en un archivo binario. Al leerlo con readRDS() puedes darle el nombre que quieras. |
saveRDS(datos, "datos.rds") |
| save() | Guardar uno o varios objetos en un archivo .RData |
Permite guardar varios objetos a la vez (data.frames, modelos, listas…). Al cargar con load() se recuperan con el mismo nombre original. |
save(datos, otra_tabla, file = "proyecto.RData") |
4 Funciones para métodos descriptivos
4.1 Diagramas de frecuencias
Para un objeto de tipo data.frame llamado datos con las variables aludidas:
| Función | Propósito | Tipo | Ejemplo |
|---|---|---|---|
| hist() | Histograma de una variable numérica | gráfico | hist(datos$edad) |
| barplot() | Diagrama de barras a partir de frecuencias | gráfico | barplot(table(datos$sexo)) |
| plot() | Gráfico genérico que puede producir diagramas de dispersión o diagramas de frecuencias simples | gráfico | plot(datos$colesterol) |
| boxplot() | Diagrama de cajas para distribución y valores atípicos | gráfico | boxplot(datos$trigliceridos) |
| pie() | Gráfico circular | gráfico | pie(table(datos$grupo)) |
| density() (solo cálculo) | Calcula la densidad para luego graficarla | objeto densidad | plot(density(datos$edad)) |
En general, las funciones gráficas soportan alguno o todos los argumentos que se indican a continuación:
| Argumento | Propósito | Ejemplo |
|---|---|---|
main |
Título principal del gráfico | main = "Histograma de HDL" |
sub |
Subtítulo del gráfico | sub = "Datos del estudio" |
xlab |
Etiqueta del eje X | xlab = "HDL (mg/dL)" |
ylab |
Etiqueta del eje Y | ylab = "Frecuencia" |
cex.main |
Tamaño del título principal | cex.main = 1.2 |
cex.lab |
Tamaño de las etiquetas de los ejes | cex.lab = 1.1 |
cex.axis |
Tamaño de los valores en los ejes | cex.axis = 0.9 |
| Argumento | Propósito | Ejemplo |
|---|---|---|
col |
Color de las barras o elementos gráficos\(^{*}\) | col = "lightblue" |
border |
Color del borde de las barras | border = "white" |
\(^{*}\) La función colors() proporciona un listado de nombres válidos de color.
Escribiendo demo("colors") se pueden ver las paletas en la ventana gráfica.
| Argumento | Propósito | Ejemplo |
|---|---|---|
xlim |
Rango del eje X (mínimo y máximo) | xlim = c(20, 120) |
ylim |
Rango del eje Y | ylim = c(0, 50) |
freq |
Frecuencia absoluta (TRUE) o densidad (FALSE) |
freq = FALSE |
breaks |
Número o posiciones de los cortes del histograma | breaks = 20 |
las |
Orientación del texto de los ejes | las = 1 |
| Argumento | Propósito | Ejemplo |
|---|---|---|
lwd |
Grosor de líneas | lwd = 2 |
lty |
Tipo de línea | lty = 2 |
4.2 Medidas descriptivas
Para un objeto de tipo data.frame llamado datos:
| Función | Propósito | Tipo | Ejemplo |
|---|---|---|---|
| table() | frecuencias absolutas | tabla | table(datos$sexo) |
| prop.table() | frecuencias relativas (proporciones). Debe tener como argumento anidado a la función table() | tabla | prop.table(table(datos$sexo)) |
Manejo de valores faltantes (NA)
En table() incluir el argumento useNA = "ifany" para que incluya la frecuencia de valores faltantes en la tabla.
Por ejemplo: table(datos$sexo, useNA="ifany")
| Función | Propósito | Tipo | Ejemplo |
|---|---|---|---|
| mean() | media aritmética | numérico | mean(datos$edad) |
| median() | mediana (percentil 50) | numérico | median(datos$edad) |
| min() | valor mínimo | numérico | min(datos$edad) |
| max() | valor máximo | numérico | max(datos$edad) |
| quantile() | cuantiles (incluye cuartiles) | numérico/vector | quantile(datos$edad) |
| summary() | resumen mixto: min, Q1, mediana, media, Q3, max | mixto | summary(datos$trigliceridos) |
Manejo de valores faltantes (NA)
Incluir el argumento na.rm=TRUE.
Por ejemplo: mean(datos$edad, na.rm=TRUE)
| Función | Propósito | Tipo | Ejemplo |
|---|---|---|---|
| range() | mínimo y máximo (proporciona los dos valores, no la diferencia max-min) | vector numérico | range(datos$edad) |
| sd() | desviación estándar | numérico | sd(datos$colesterol) |
| var() | varianza | numérico | var(datos$colesterol) |
| IQR() | rango intercuartílico (Q3 - Q1) | numérico | IQR(datos$edad) |
Manejo de valores faltantes (NA)
Incluir el argumento na.rm=TRUE.
Por ejemplo: sd(datos$edad, na.rm=TRUE)
5 Análisis de la normalidad
- En el código siguiente
xes un vector numérico
| Método gráfico | Qué evalúa | Perfil bajo la normalidad | Código en R base |
|---|---|---|---|
| Histograma | Forma global de la distribución (simetría, unimodalidad). | Histograma aproximadamente simétrico, con forma de campana. | hist(x,<br>col = "lightgray",<br>border = "white") |
| Histograma + curva normal | Ajuste visual entre los datos y una normal teórica con misma media y sd. | La curva normal se superpone razonablemente al histograma. | hist(x, prob = TRUE)<br>curve(dnorm(x,<br>mean(x),<br>sd(x)),<br>add = TRUE) |
| Curva de densidad (KDE) | Estimación suavizada de la densidad empírica. | Curva aproximadamente simétrica y unimodal. | plot(density(x)) |
| Densidad empírica vs normal | Comparación directa entre densidad observada y normal teórica. | Ambas curvas tienen forma y centro similares. | plot(density(x))<br>curve(dnorm(x, mean(x), sd(x)), add = TRUE) |
| Q–Q plot normal | Comparación de cuantiles observados vs cuantiles normales teóricos. | Los puntos siguen aproximadamente una recta. | qqnorm(x)<br>qqline(x) |
| Boxplot | Simetría, dispersión y presencia de valores extremos. | Mediana centrada y bigotes de longitud similar. | boxplot(x, horizontal = TRUE) |
En todos los test, la hipótesis nula es que los datos siguen una distribución normal.
xes el vector numérico cuya normalidad se desea contrastarFunciones del lenguaje base de R
| Nombre del test | Características fundamentales | Código en R |
|---|---|---|
| Shapiro–Wilk | Test estándar de normalidad en R base. Muy potente para muestras pequeñas (n < 50). Hipótesis nula: los datos siguen una distribución normal. | shapiro.test(x) |
| Kolmogorov–Smirnov | Compara la distribución empírica con una normal teórica. No recomendado cuando la media y la desviación se estiman de los datos. |
ks.test(x, "pnorm", mean(x), sd(x)) |
- Funciones del Paquete
nortest(disponible en CRAN)
library(nortest)
| Nombre del test | Características fundamentales | Código en R (x es un vector) |
|---|---|---|
| Lilliefors | Versión corregida del test de Kolmogorov–Smirnov. Adecuado cuando μ y σ son desconocidos. | lillie.test(x) |
| Anderson–Darling | Da mayor peso a las colas de la distribución. Muy sensible a desviaciones de la normalidad. Alternativa sólida al Shapiro–Wilk. | ad.test(x) |
| Cramér–von Mises | Evalúa discrepancias globales entre la distribución empírica y la normal teórica. Uso más académico que clínico. | cvm.test(x) |