Respuestas:
stopifnot()
para pruebas de validez, para probar que el código está haciendo lo que se supone que debe hacer, pero if (blahdiblah) stop("error message")
para pruebas de entrada, para probar que la entrada al programa es válida. Solo esto último debería ocurrir durante el uso normal.
assertthat
paquete de Hadley , que ofrece mejores respuestas que las que stopifnot
ofrece: github.com/hadley/assertthat
@Mella:
Puede controlar su mensaje de error si escribe una función con un nombre descriptivo para probar la condición que arrojará un error en su programa. He aquí un ejemplo:
Less_Than_8 = function(x) return(x < 8)
for (i in 1:10)
{
print(i)
stopifnot(Less_Than_8(i))
}
Esto imprimirá los números del 1 al 8, luego imprimirá un mensaje que dice
Error: Less_Than_8(i) is not TRUE
Sería bueno si la "i" entre paréntesis fuera reemplazada por el valor que no pasó la prueba, pero obtienes lo que pagas.
Si necesita algo más elegante que eso, busque en Runit y pruébelo como sugirió Harlan.
stopifnot()
.
Esto se puede lograr con el stop
comando. Este comando detendrá la ejecución de una función e imprimirá el mensaje de error. Por ejemplo, podemos probar si la variable something
es FALSE
:
if(something == FALSE){
stop("error message to print")
}
De manera similar, el warning
comando imprimirá una advertencia (pero continuará ejecutando el código).
if(something == FALSE){
warning("error message to print")
}
Ambos son proporcionados por base R y no requieren paquetes para ejecutar o incluir por escrito sus propias funciones. Prefiero este enfoque para escribir código con menos dependencias y esta sintaxis se usa ampliamente en el desarrollo de paquetes. Sin embargo, el paquete "assertthat" admite una funcionalidad similar con la assert_that
función que se ha lanzado recientemente como parte del "tidyverse" de Hadley.