¿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 recovery browsey tracebackpero, 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). Usarstopenerrorargumento detryCatchdesordenará el rastro. Sin embargo, elfinallyargumento 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
plottraza una función,trystopwarntodo funciona como es de esperar, y casi todo lo que quiero hacer es una línea.En realidad la función
stopifnotes 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.framenombredf1y comprobando sicol1existe:o
Por ejemplo
fuente