Como saber quando se importar com avisos em R

Erros e avisos têm funções diferentes em R Você não pode contornar erros, porque eles simplesmente parar seu código. Advertências, por outro lado, são um animal totalmente diferente. Mesmo se R joga um aviso, que continua a executar o código independentemente. Você pode ignorar os avisos, mas geralmente essa é uma má idéia. Os avisos são muitas vezes o único sinal que você tem que seu código tem algum erro de semântica ou lógica.

Por exemplo, você poderia ter esquecido o ifelse () função e tentou algo parecido com o seguinte exemplo:

> x lt; - 01:10> y lt; - se (x lt; 5) 0 else 1Warning mensagem: Em if (x lt; 5) 0 else 1: a condição tem comprimento> 1 e será usado apenas o primeiro elemento

Este pontos de alerta em um erro de semântica: E se espera que uma única VERDADE ou FALSO valor, mas você forneceu um vetor inteiro. Note-se que, assim como erros, avisos dizer que, em geral, qual o código gerou o aviso.

Aqui está outra advertência que aparece regularmente e pode apontar para um erro de semântica ou lógica em seu código:

> x lt; - 4> sqrt (x - 5) [1] mensagem NaNWarning: Em sqrt (x - 5): NaNs produzido

Porque x - 5 é negativo quando x é 4, R não pode calcular a raiz quadrada e avisa que a raiz quadrada de um número negativo não é um número (NaN).

Se você é um matemático, você pode apontar que a raiz quadrada de -1 é 0 - 1i. R pode, de fato, fazer cálculos com números complexos, mas então você tem que definir suas variáveis ​​como números complexos. Você pode verificar, por exemplo, o arquivo de Ajuda ?complexo Para maiores informações.

Embora a maioria dos avisos resultar de erros de semântica ou lógica em seu código, mesmo um erro de sintaxe simples pode gerar um aviso em vez de um erro. Se você quiser traçar alguns pontos em R, utiliza o enredo() função. Leva um argumento col para indicar a cor dos pontos, mas que poderia tentar erroneamente para colorir os pontos com a seguinte:

> Plot (1:10, 10: 1, color = "verde")

Se você tentar isso, você tem seis mensagens de aviso de uma só vez, todos dizendo que cor provavelmente não é o nome do argumento você estava procurando:

Mensagens de aviso: 1: Em plot.window (...): "cor" não é um parâmetro2 gráfica: Em plot.xy (xy, tipo, ...): "cor" não é um parâmetro gráfica ....

Observe que as mensagens de aviso não apontam para o código digitado no line- comando em vez disso, eles apontam para funções que você nunca usou antes, como plot.window () e plot.xy ().

Você pode passar argumentos de uma função para outra usando o argumento pontos. Isso é exatamente o enredo() faz aqui. Assim, enredo() em si não gera um aviso, mas cada função que enredo() passa o cor argumento para o faz.

Se você receber mensagens de aviso ou de erro, um profundo olhar para as páginas de ajuda da função (s) que gerou o erro pode ajudar a determinar qual é o motivo para a mensagem que você tem. Por exemplo, na página de Ajuda do ?plot.xy, você achar que o nome correto para o argumento é col.

Assim, para resumir, a maioria dos avisos apontar para um dos seguintes problemas:

  • A função deu-lhe um resultado, mas por algum motivo esse resultado pode não estar correto.

  • A função gerado um resultado atípico, como N / D ou NaN valores.

  • A função não poderia lidar com alguns dos argumentos e os ignorou.

Apenas o último diz-lhe que há um problema com a sua sintaxe. Para os outros, você tem que analisar seu código um pouco mais.

menu