Имеет ли R утверждение assert как в python?

инструкция, которая проверяет, что что-то истинно, и если не печатает данное сообщение об ошибке и выходит из

Ответ 1

stopifnot()

Вас также могут заинтересовать такие пакеты, как 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" Хэдли.