5.4 Erros comuns

As expressões abaixo ilustram o que acontece quando cometemos alguns erros bem comuns ao trabalhar com :

srt(2)
#> Error in srt(2): could not find function "srt"
m * g
#> Error in eval(expr, envir, enclos): object 'm' not found
2 + 4(log(5))
#> Error in eval(expr, envir, enclos): attempt to apply non-function
setwd("algum/caminho/no/alem")
#> Error in setwd("algum/caminho/no/alem"): cannot change working directory
save(file = "outro/caminho/no/alem")
#> Warning in save(file = "outro/caminho/no/alem"): nothing specified to be save()d
#> Warning in gzfile(file, "wb"): cannot open compressed file 'outro/caminho/no/
#> alem', probable reason 'No such file or directory'
#> Error in gzfile(file, "wb"): cannot open the connection

Reconhecemos um erro pela presença da palavra Error na mensagem e por estar destacada em vermelha ou laranja, dependendo de como o RStudio está configurado. O que tem depois do ":" na mensagem é uma tentativa do nos dizer o que deu errado.

As mensagens de erro são suas amigas. Sempre leia as mensagens de erro. Elas serão incompreensíveis no início, mas acabarão fazendo mais sentido e tornando-se útil (eu espero). Essa maneira de aprender só funciona se lermos as mensagens de erro em primeiro lugar.

No trecho de código acima, na avaliação da expressão com a função save() surge primeiro um Warning (aviso). Avisos surgem quando algo inesperado ocorreu, mas que as coisas ainda podem dar certo. Outro exemplo de mensagem de aviso é:

sqrt(-1)
#> Warning in sqrt(-1): NaNs produced
#> [1] NaN

Na expressão acima foi possível obter um resultado, mas o R avisa que foi produzido NaN. Como visto na seção 5.2.2, qualquer operação derivada deste resultado produzirá NaN.

Algumas vezes, as mensagens de erro e aviso podem não fazer sentido nem mesmo para usuários experientes, então fica a dica de consulta para referência (Figura 5.1 ;) ) sobre as duas técnicas mais importantes para desvendar os mistérios das mensagens de erros.

Livros para maestria em programação.

Figura 5.1: Livros para maestria em programação.