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.

library(dplyr)

14.1 could not find function

promedio(c(2, 4, 6))
## 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:

Sqrt(9)
## 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

resultado + 1
## 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

"3" * 2
## 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

mean(c(1, 2, 3), n = 2)
## [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 ==

filter(mtcars, cyl = 6)
## 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:

mean(c(1, 2, NA))
## [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:

mean(c(1, 2, NA), na.rm = TRUE)
## [1] 1.5

14.7 cannot open file ... No such file or directory

read.csv("mis_datos_que_no_existen.csv")
## 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

  1. Lee el mensaje completo, sobre todo la primera línea.
  2. Identifica la función o la línea que menciona.
  3. Pregúntate: ¿escribí bien el nombre?, ¿activé el paquete?, ¿existe la variable?, ¿el archivo está donde digo?
  4. Si te atoras, copia el mensaje de error y búscalo en internet: casi siempre alguien ya tuvo el mismo problema.
  5. 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.