¿Alguien tiene ejemplos / tutoriales de manejo de excepciones en R? La documentación oficial es muy concisa.
r
exception-handling
boquiabierto
fuente
fuente
Respuestas:
Además de la respuesta de Shane que le indica otras discusiones de StackOverflow, puede probar una función de búsqueda de código. Esta respuesta original apuntaba a la búsqueda de código de Google desde entonces ha sido descontinuada, pero puede intentar
Solo para que conste, también existe,
try
perotryCatch
puede ser preferible. Probé un conteo rápido en Google Code Search, pero el intento obtiene demasiados falsos positivos para el verbo en sí, pero parece quetryCatch
se usa más ampliamente.fuente
Básicamente quieres usar la
tryCatch()
función. Consulte la ayuda ("tryCatch") para obtener más detalles.Aquí hay un ejemplo trivial (tenga en cuenta que puede hacer lo que quiera con un error):
Eche un vistazo a estas preguntas relacionadas:
fuente
Este resultado de una búsqueda relacionada en Google me ayudó: http://biocodenv.com/wordpress/?p=15 .
fuente
La función
trycatch()
es bastante sencilla y hay muchos buenos tutoriales sobre eso. Se puede encontrar una excelente explicación del manejo de errores en R en el libro Advanced-R de Hadley Wickham , y lo que sigue es una introducción muy básicawithCallingHandlers()
ywithRestarts()
en la menor cantidad de palabras posible:Digamos que un programador de bajo nivel escribe una función para calcular el valor absoluto. No está seguro de cómo calcularlo, pero sabe cómo construir un error y transmite diligentemente su ingenuidad:
Un programador de nivel medio también escribe una función para calcular el valor absoluto, haciendo uso de la
low_level_ABS
función lamentablemente incompleta . Sabe que el código de bajo nivel arroja unnegative_value
error cuando el valor dex
es negativo y sugiere una solución al problema, al establecer un códigorestart
que permite a los usuarios demid_level_ABS
controlar la forma en que semid_level_ABS
recupera (o no) de unnegative_value
error.Por último, un programador de alto nivel usa la
mid_level_ABS
función para calcular el valor absoluto y establece un controlador de condición que le dice almid_level_ABS
que se recupere de unnegative_value
error usando el controlador de reinicio.El punto de todo esto es que al usar
withRestarts()
ywithCallingHandlers()
, la funciónhigh_level_ABS
fue capaz de decirmid_level_ABS
cómo recuperarse de los errores generados porlow_level_ABS
error sin detener la ejecución demid_level_ABS
, que es algo que no se puede hacer contryCatch()
:En la práctica,
low_level_ABS
representa una función quemid_level_ABS
llama mucho (quizás incluso millones de veces), por lo que el método correcto de manejo de errores puede variar según la situación, y la elección de cómo manejar errores específicos se deja a funciones de nivel superior (high_level_ABS
).fuente
La función de reinicio es muy importante en R heredado de Lisp. Es útil si desea llamar a alguna función en el cuerpo del bucle y solo desea que el programa continúe si la llamada a la función colapsa. Prueba este código:
fuente