Como para caçar erros em R

Caça para Bugs no R, por vezes, pode ser uma situação complicada. Embora a mensagem de erro sempre lhe diz que linha de código gera o erro, ele pode não ser a linha de código onde as coisas começaram a dar errado. Isso faz com que bug caçar um negócio complexo, mas algumas estratégias simples podem ajudar a rastrear essas criaturas traquinas.

Calcule o logit

Para ilustrar algumas estratégias bug-caça em R, usar um exemplo simples. Digamos, por exemplo, o seu colega escreveu duas funções para calcular o logit de ambas as proporções e percentagens, mas ele não pode levá-los a trabalhar. Então, ele pede-lhe para ajudar a encontrar os bugs. Aqui está o código que ele envia para você:

# controlos de entrada e faz logit calculationlogit lt; - função (x) x> 1, "NA", x) log (x / (1 - x)) # transforma percentual para o número e solicita logitlogitpercent lt; - função (x) {x lt; - gsub ( "%", "", x) logit (as.numeric (x))}

Copie e cole este código para o editor, e salve o arquivo usando, por exemplo, logitfunc.R como o seu nome. Depois disso, fonte o arquivo em R partir do editor usando o fonte() função ou o botão de fonte ou comando do editor de sua escolha. Agora o código de função é carregado em P, e você está pronto para começar a caça.

O logit é nada mais do que o logaritmo das probabilidades, calculado como log (x / (1-x)) E se x é a probabilidade de algum evento a ter lugar. Os estatísticos usar esta na modelagem de dados binários usando modelos lineares generalizados. Se você precisar calcular um logit, você pode usar a função qlogis () por isso. Para calcular probabilidades de valores logit, você usa o plogis () função.

Saber onde um erro vem de

Seu colega reclamou que ele obteve um erro ao tentar o seguinte código:

> Logitpercent ('50% ') Erro em 1 - x: argumento não-numérico para operador binário

Com certeza, mas você não encontrar o código 1 - x no corpo de logitpercent (). Assim, o erro vem de outro lugar. Para saber de onde, você pode usar o traceback () função imediatamente após o erro ocorreu, como este:

> Traceback () 2: logit (as.numeric (x)) no logitfunc.R # 91: logitpercent ( "50%")

este traceback () impressões de função que é chamado de pilha de chamadas que levam para o último erro. Esta pilha de chamadas representa a sequência de chamadas de função, mas na ordem inversa. A função na parte superior é a função em que o erro real é gerado.

Neste exemplo, o chamado R logitpercent () função, e que a função, por sua vez, chamada logit (). O rastreamento informa que o erro ocorreu no interior do logit () função. Ainda mais, o traceback () função diz-lhe que o erro ocorreu na linha 9 do logitfunc.R arquivo de código, tal como indicado pela logitfunc.R # 9 no traceback () saída.

A pilha de chamadas lhe dá um monte de informações - às vezes até demais. Ele pode apontar para uma função interna obscura como aquele que jogou a erro. Se essa função não tocar um sino, verifique superior na pilha de chamadas para uma função que você reconhecer e iniciar a depuração de lá.

menu