Respostas:
stopifnot()
para teste de validade, para testar se o código está fazendo o que deveria estar fazendo, mas if (blahdiblah) stop("error message")
para teste de entrada, para testar se a entrada para o programa é válida. Apenas o último deve acontecer durante o uso normal.
assertthat
pacote do Hadley , que dá respostas melhores do stopifnot
que: github.com/hadley/assertthat
@Usuario:
Você pode controlar sua mensagem de erro se escrever uma função com um nome descritivo para testar a condição que lançará um erro em seu programa. Aqui está um exemplo:
Less_Than_8 = function(x) return(x < 8)
for (i in 1:10)
{
print(i)
stopifnot(Less_Than_8(i))
}
Isso imprimirá os números de 1 a 8 e, em seguida, imprimirá uma mensagem que diz
Error: Less_Than_8(i) is not TRUE
Seria bom se o "i" entre parênteses fosse substituído pelo valor que falhou no teste, mas você recebe o que paga.
Se você precisar de algo mais sofisticado do que isso, dê uma olhada em Runit e teste-o como sugeriu Harlan.
stopifnot()
também.
Isso pode ser feito com o stop
comando. Este comando interromperá a execução de uma função e imprimirá a mensagem de erro. Por exemplo, podemos testar se a variável something
é FALSE
:
if(something == FALSE){
stop("error message to print")
}
Da mesma forma, o warning
comando imprimirá um aviso (mas continuará executando o código).
if(something == FALSE){
warning("error message to print")
}
Ambos são fornecidos pela base R e não requerem pacotes para serem executados ou incluem por escrito suas próprias funções. Eu prefiro essa abordagem para escrever código com menos dependências e essa sintaxe é amplamente usada no desenvolvimento de pacotes. No entanto, funcionalidade semelhante é suportada pelo pacote "assertthat" com a assert_that
função que foi lançada recentemente como parte do "tidyverse" de Hadley.