оператор, который проверяет, верно ли что-то, а если нет, печатает сообщение об ошибке и завершает работу
Ответы:
stopifnot()
для проверки достоверности, чтобы проверить, что код выполняет то, что он должен делать, но if (blahdiblah) stop("error message")
для тестирования ввода, чтобы проверить правильность ввода в программу. Только последнее должно происходить при нормальном использовании.
assertthat
пакет Хэдли , который дает лучшие ответы, чем stopifnot
дает: github.com/hadley/assertthat
@Ник:
Вы можете управлять своим сообщением об ошибке, если напишете функцию с описательным именем, чтобы проверить условие, которое вызовет ошибку в вашей программе. Вот пример:
Less_Than_8 = function(x) return(x < 8)
for (i in 1:10)
{
print(i)
stopifnot(Less_Than_8(i))
}
Это напечатает числа от 1 до 8, а затем напечатает сообщение, в котором говорится
Error: Less_Than_8(i) is not TRUE
Было бы неплохо, если бы букву «i» в круглых скобках заменили значением, которое не прошло проверку, но вы получите то, за что платите.
Если вам нужно что-то более интересное, загляните в Runit и проверьте это, как предложил Харлан.
stopifnot()
.
Это можно сделать с помощью stop
команды. Эта команда остановит выполнение функции и напечатает сообщение об ошибке. Например, мы можем проверить , если переменная something
является FALSE
:
if(something == FALSE){
stop("error message to print")
}
Аналогичным образом warning
команда выведет предупреждение (но продолжит выполнение кода).
if(something == FALSE){
warning("error message to print")
}
Оба они предоставляются базовым R и не требуют пакетов для запуска или включения в написании ваших собственных функций. Я предпочитаю этот подход для написания кода с меньшим количеством зависимостей, и этот синтаксис широко используется при разработке пакетов. Однако аналогичная функциональность поддерживается пакетом assertthat с assert_that
функцией, которая недавно была выпущена как часть «tidyverse» Хэдли.