Alguém tem exemplos / tutoriais de tratamento de exceções em R? A documentação oficial é muito concisa.
r
exception-handling
boquiaberto
fonte
fonte
Respostas:
Além da resposta de Shane apontando para outras discussões StackOverflow, você pode tentar um recurso de pesquisa de código. Esta resposta original apontava para a Pesquisa de código do Google que foi descontinuada, mas você pode tentar
Apenas para registro, existe também,
try
mastryCatch
pode ser preferível. Eu tentei uma contagem rápida no Google Code Search, mas tentei obter muitos falsos positivos para o próprio verbo - mas parece quetryCatch
é mais amplamente usado.fonte
Basicamente, você deseja usar a
tryCatch()
função. Veja a ajuda ("tryCatch") para mais detalhes.Aqui está um exemplo trivial (tenha em mente que você pode fazer o que quiser com um erro):
Dê uma olhada nessas questões relacionadas:
fonte
Este resultado de uma pesquisa do Google relacionada me ajudou: http://biocodenv.com/wordpress/?p=15 .
fonte
A função
trycatch()
é bastante simples e existem muitos bons tutoriais sobre isso. Uma excelente explicação do tratamento de erros em R pode ser encontrada no livro Advanced-R de Hadley Wickham , e o que se segue é uma introdução muito básicawithCallingHandlers()
ewithRestarts()
com o mínimo de palavras possível:Digamos que um programador de baixo nível escreva uma função para calcular o valor absoluto. Ele não tem certeza de como calculá-lo, mas sabe como construir um erro e transmite diligentemente sua ingenuidade:
Um programador de nível médio também escreve uma função para calcular o valor absoluto, fazendo uso da
low_level_ABS
função lamentavelmente incompleta . Ele sabe que o código de baixo nível gera umnegative_value
erro quando o valor dex
é negativo e sugere uma solução para o problema, estabelecendo umrestart
que permite aos usuários demid_level_ABS
controlar a forma como semid_level_ABS
recupera (ou não) de umnegative_value
erro.Finalmente, um programador de alto nível usa o
mid_level_ABS
função para calcular o valor absoluto e estabelece um manipulador de condição que diz aomid_level_ABS
para se recuperar de umnegative_value
erro usando o manipulador de reinicialização.O ponto de tudo isso é que usando
withRestarts()
ewithCallingHandlers()
, a funçãohigh_level_ABS
foi capaz de dizermid_level_ABS
como se recuperar de erros levantados porlow_level_ABS
erro sem interromper a execução demid_level_ABS
, que é algo que você não pode fazer comtryCatch()
:Na prática,
low_level_ABS
representa uma função quemid_level_ABS
chama muito (talvez até milhões de vezes), para a qual o método correto de tratamento de erros pode variar de acordo com a situação, e a escolha de como tratar erros específicos é deixada para funções de nível superior (high_level_ABS
).fonte
A função de reinicialização é muito importante no R herdado do Lisp. É útil se você deseja chamar alguma função no corpo do loop e deseja apenas que o programa continue se a chamada da função for interrompida. Experimente este código:
fonte