¿Cómo se "arroja" un error en R? Tengo una función que toma un marco de datos y algunos nombres de columna y hace cosas con ellos. Si las columnas no existen, quiero que la función se detenga y que detenga todas las funciones dependiendo de ella.
He mirado recover
y browse
y traceback
pero, bueno, parecían estar cerca pero no era lo que estaba buscando.
r
error-handling
Forkandwait
fuente
fuente
Respuestas:
Ver
help(tryCatch)
:y luego en 'Ver también':
por lo que es probable que desee
stop
.fuente
traceback()
después del error para ver qué salió mal). Usarstop
enerror
argumento detryCatch
desordenará el rastro. Sin embargo, elfinally
argumento permitirá lanzar un mensaje adicional y mantendrá útil la traza. No es exactamente sobre el tema, pero creo que es lo suficientemente importante como para justificar algunas desventajas y una amenaza de moderación que arroja este comentario por la ventana. :-)Ejemplo simple:
fuente
Más allá de las funciones básicas que Dirk menciona:
El paquete R.oo tiene una funcionalidad adicional de manejo de excepciones, incluida una función throw () que es muy útil. Puede detectar excepciones con las funciones habituales try o trycatch:
Puede leer más sobre esto aquí: http://www1.maths.lth.se/help/R/R.oo/
fuente
plot
traza una función,try
stop
warn
todo funciona como es de esperar, y casi todo lo que quiero hacer es una línea.En realidad la función
stopifnot
es muy conveniente para implementar controles de cordura en su código. Toma varias expresiones lógicas y devuelve un error si alguna de ellas se evalúa como falsa.Ejemplo: para verificar si la columna 'c' existe en el marco de datos 'df':
Esto arrojará el siguiente error:
fuente
assert(...)
...Puede verificar si la columna existe y hacer lo que quiera.
Supongamos una columna con
data.frame
nombredf1
y comprobando sicol1
existe:o
Por ejemplo
fuente