Como gerar suas mensagens de erro próprios em R
Gerar suas próprias mensagens pode soar estranho, mas você pode realmente evitar erros em R gerando seus próprios erros. Lembre-se do erro de lógica na logitpercent ()
função? Teria sido mais fácil de detectar se o logit () função retornou um erro dizendo que você passou um número maior que 1.Adicionando mensagens de erro sensível (ou aviso) para uma função pode ajudar a depurar funções futuras onde você chamar essa função específica novamente. É especialmente ajuda a encontrar erros de semântica ou lógicas que são de outra maneira difícil de encontrar.
Como criar mensagens de erro no R
Você pode dizer R para lançar um erro, inserindo o Pare() funcionar em qualquer parte do corpo da função, tal como no exemplo que se segue:
logit lt; - função (x) if (qualquer (x lt; 0
Com o E se() declaração, você testar se qualquer valor na x situa-se entre 0 e 1. Usando o qualquer() função em torno da condição permite que o seu código para trabalhar com vetores completos de uma só vez, em vez de com os valores individuais. Porque o registro() obras de função vetorizado, bem como, toda a função é agora vetorizado.
Se você alterar o corpo do logit () funcionar desta maneira e tentar calcular o logit de 50% e 150% (ou 0,5 e 1,5), R lança um erro como o seguinte:
> Logitpercent (c ('50% ',' 150% ')) Erro no logit (as.numeric (x) / 100): não x entre 0 e 1
Como o nome indica, a execução do código pára sempre que o Pare() função é efectivamente realizadas saída, portanto, ele não retorna um resultado.
Como criar mensagens de aviso no R
Você também pode fazer a função de gerar um aviso em vez de um erro. Dessa forma, você ainda obter a mesma informação, mas a função completa é realizada de modo a obter um resultado tão bem.
Para gerar um aviso, utilizar o aviso() função em vez da Pare() função. Assim, para obter o resultado o seu colega quer, você simplesmente alterar o corpo da função para o seguinte código:
x lt; - ifelse (X lt; 0 | x> 1, AN, x), se (qualquer (is.na (x))) de aviso ( 'X não entre 0 e 1') log (x / (1 - X))
Se você tentar a função agora, você obter o resultado desejado:
> Logitpercent (c ('50% ',' 150% ')) [1] mensagem 0 NAWarning: Em logit (as.numeric (x) / 100): não x entre 0 e 1
Não só o retorno de função N / D quando deveria, mas também dá-lhe um aviso de que pode ajudar com a depuração de outras funções que usam o logit () função em algum lugar no corpo.