Capítulo14 Errores comunes y cómo resolverlos
Fecha de la última revisión
## [1] "2026-08-01"
Equivocarse es parte normal de programar. Hasta quienes llevan años usando R ven errores todos los días. La destreza que de verdad importa no es evitar los errores, sino aprender a leerlos y resolverlos, porque cuando hagas tu propio análisis nadie va a haber “arreglado” el código de antemano.
Un mensaje de error casi siempre te dice dos cosas: qué salió mal y, muchas veces, dónde (la función o la línea). Léelo despacio de arriba hacia abajo; la primera línea suele ser la más importante.
En este capítulo provocamos a propósito los errores más frecuentes para que los reconozcas cuando aparezcan. En cada ejemplo verás el mensaje real de R y luego cómo resolverlo.
14.1 could not find function
## Error in `promedio()`:
## ! could not find function "promedio"
could not find function "promedio" significa que R no conoce esa función. Las
tres causas más comunes son: (1) escribiste mal el nombre, (2) olvidaste activar
el paquete con library(), o (3) la función es de otro paquete que no está
instalado. Solución: revisa la ortografía y corre el library() correspondiente.
R distingue mayúsculas de minúsculas, así que Sqrt no es lo mismo que sqrt:
## Error in `Sqrt()`:
## ! could not find function "Sqrt"
Si una función “no existe” pero estás seguro de que sí, revisa las mayúsculas:
sqrt(), no Sqrt(); TRUE, no True.
14.2 object ... not found
## Error:
## ! object 'resultado' not found
object 'resultado' not found quiere decir que usaste una variable que todavía
no existe. Suele pasar cuando hay una errata en el nombre o cuando no corriste
antes el bloque que crea esa variable. Solución: crea la variable primero
(resultado <- ...) y ejecuta los bloques en orden.
14.3 non-numeric argument to binary operator
## Error in `"3" * 2`:
## ! non-numeric argument to binary operator
R no puede multiplicar texto por un número: "3" (con comillas) es una cadena
de caracteres, no el número 3. Conviértelo con as.numeric("3") antes de operar.
14.4 unused argument
## [1] 2
unused argument (n = 2) significa que le pasaste a la función un argumento que
no reconoce. Casi siempre es un nombre de argumento equivocado. Revisa la
ayuda con ?mean para ver los nombres correctos (aquí no existe n; quizás
querías trim).
14.5 Confundir = con ==
## Error in `filter()`:
## ! We detected a named input.
## ℹ This usually means that you've used `=` instead of `==`.
## ℹ Did you mean `cyl == 6`?
Dentro de filter() (y para comparar en general) se usa ==, no =. Un solo =
asigna; el doble == compara. Por suerte, dplyr hasta te sugiere la
corrección: cyl == 6.
14.6 El caso especial de NA (no es un error, pero engaña)
Esto no produce un error, pero el resultado sorprende a muchos:
## [1] NA
Casi cualquier cálculo con un valor faltante (NA) devuelve NA. No es un error:
R te avisa que no puede calcular la media sin saber ese dato. La solución es pedir
que ignore los faltantes con na.rm = TRUE:
## [1] 1.5
14.7 cannot open file ... No such file or directory
## Error in `file()`:
## ! cannot open the connection
Este error aparece cuando R no encuentra el archivo. Las causas típicas son:
el nombre está mal escrito, el archivo está en otra carpeta, o tu directorio de
trabajo no es el que crees. La mejor prevención es trabajar siempre dentro de un
Proyecto de RStudio y usar rutas relativas como "Datos/mi_archivo.csv".
14.8 cannot open URL (descargar datos de internet)
Cuando un capítulo baja datos en vivo, por ejemplo con
fread("https://…") o download.file(), y no hay conexión (o el servidor no
responde), verás algo como esto:
Error in download.file(...) :
cannot open URL 'https://ejemplo.com/datos.csv'
(No ejecutamos ese código aquí a propósito, para no depender de la red.)
cannot open URL no es un error de tu código: significa que no hay internet o
que el servidor está caído o lento. Verifica tu conexión y vuelve a intentar.
Una técnica profesional para que tu análisis no se caiga por completo cuando esto
pasa es tryCatch(): intenta la descarga en vivo y, si falla, usa una copia
local que guardaste antes. Este es exactamente el patrón que usamos en el capítulo
de mapas:
datos <- tryCatch(
fread("https://ejemplo.com/datos.csv"), # intenta en vivo
error = function(e) readr::read_csv("Datos/copia_local.csv") # si falla, usa la copia
)Buena práctica: descarga los datos una vez, guárdalos con write_csv() en la
carpeta Datos/, y en adelante trabaja con la copia local. Así tu análisis es
reproducible aunque no tengas internet.
14.9 Un método general para resolver errores
- Lee el mensaje completo, sobre todo la primera línea.
- Identifica la función o la línea que menciona.
- Pregúntate: ¿escribí bien el nombre?, ¿activé el paquete?, ¿existe la variable?, ¿el archivo está donde digo?
- Si te atoras, copia el mensaje de error y búscalo en internet: casi siempre alguien ya tuvo el mismo problema.
- Reduce el problema a un ejemplo mínimo que lo reproduzca; muchas veces al simplificarlo descubres la causa.
Guarda la calma: un error no significa que “no sirves para esto”. Significa que R necesita que le aclares algo. Cada error que resuelves te hace mejor analista.