инструкция, которая проверяет, что что-то истинно, и если не печатает данное сообщение об ошибке и выходит из
Имеет ли R утверждение assert как в python?
Ответ 1
Вас также могут заинтересовать такие пакеты, как Runit и testthat для модульного тестирования.
Ответ 2
@Nick:
Вы можете управлять своим сообщением об ошибке, если вы пишете функцию с описательным именем, чтобы проверить условие, которое вызовет ошибку в вашей программе. Вот пример:
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 и testthat, как предложил Харлан.
Ответ 3
Это может быть достигнуто с помощью команды stop
. Эта команда остановит выполнение функции и выведет сообщение об ошибке. Например, мы можем проверить, является ли переменная something
FALSE
:
if(something == FALSE){
stop("error message to print")
}
Аналогичным образом, команда warning
напечатает предупреждение (но продолжит выполнение кода).
if(something == FALSE){
warning("error message to print")
}
Они оба предоставляются Base R и не требуют никаких пакетов для запуска или включения в написание ваших собственных функций. Я предпочитаю такой подход для написания кода с меньшим количеством зависимостей, и этот синтаксис широко используется в разработке пакетов. Однако аналогичные функциональные возможности поддерживаются пакетом "assertthat" с функцией assert_that
, которая недавно была выпущена как часть "tidyverse" Хэдли.